2016-05-05 4 views
4

データがデータベースからのものである場合、DOMは反映されません。 ページロード時にproductList配列にデータがあり、いくつかのフィルタを適用した後(価格は500〜1000の間でなければなりません)、リクエストはAPIに送られ、更新されたproductListはレスポンスから来ます。しかし、製品はページに反映されていません。

私はngのリピートからproductListの個別の製品を示しディレクティブにデータを送信していますし、私のコードは以下の通りです:

<div ng-repeat="product in productList track by $index"> 

+0

ng-ifを追加しますより多くのコードを表示します。どのようにデータを取得していますか?その結果をDOMにどのように格納しますか?上記divの直前に「

productList: {{productList|json}}
」を置くとどうなりますか? – Duncan

答えて

1

は、私が知るようになったこと$インデックスは、問題の原因私たちがスコープからデータを渡すとき。したがって、データの損失やDOMを更新することはできません。

私は以下のようなNG-繰り返しでキーとしてproduct.id使用して解決策が見つかりました:ときに複数の

<div ng-repeat="product in productList track by product.id"> 

しかし、上記のコードは再度、以下のエラーが失敗し、スロー製品に同じidが付いている場合、同一のIDが付いている製品は同じ製品として扱われます。

angular.js:11706エラー:[ngRepeat:dupes]リピーターの重複は許可されていません。固有のキーを指定するには、 'track by'式を使用します。リピータ

だから最終的に私は以下のようにNG-繰り返しの動的な一意のキーを作成することで問題を解決:

<div ng-repeat="product in productList track by (product.id + $index)"> 

0

をちょうどあなたがする必要があるのdiv

<div ng-if="productList" ng-repeat="product in productList track by $index"> 
+0

このソリューションを使用してもデータはまだ反映されません。 –

関連する問題