2014-09-03 55 views
1

我正在玩Angular,而且我偶然發現了另一個問題。我試圖從外部js文件中提取數據,並收到'錯誤:ngRepeat:dupes'錯誤。另一個AngularJS錯誤:ngRepeat:dupes

<div class="productRow" ng-repeat="prod in productsList"> 

所以按照錯誤消息中提供的方向,我加了「軌道由」

<div class="productRow" ng-repeat="prod in productsList track by $index"> 

我的數據出現,但現在它只是重複一個項目多次。

請查看this link瞭解完整的代碼。

我做錯了什麼?我的意思顯然是我,但我做錯了什麼?

謝謝!

+1

https://docs.angularjs.org/error/ngRepeat/dupes – 2014-09-03 20:08:28

+0

謝謝保羅!我閱讀了該頁面並遵循了它,至少我認爲我做了,但是我的數據仍然只是重複一個項目。 有沒有其他想法? – 2014-09-03 20:16:08

回答

2

角度不是問題,它會顯示你只要陣列。

在script.js中,如果在生成後添加console.log($scope.productsList);,您會明白我的意思。

你的問題是此行

if (productItems[ii] == products[jj].id)

你是不是重置thisProduct

添加此下下thisProduct = {};

+0

謝謝!我實際上有定義的變量,但在文件中的更早。我按照你的建議把它拿下來,它可以工作。謝謝一堆! – 2014-09-03 20:37:38

0

這是因爲你的productsList包含相同的對象。

[{"prodIdxId":207,"skuId":477072,"title":"Allergy Liquid Cherry Flavored","size":"4 OZ","price":5.99,"discount_price":0,"discount_msg":"","ship_save":1,"free_shipping":1,"weight":"0.06 LBS","rating":0,"img":"5042813846.jpg","out_of_stock":0,"qty":3},{"prodIdxId":207,"skuId":477072,"title":"Allergy Liquid Cherry Flavored","size":"4 OZ","price":5.99,"discount_price":0,"discount_msg":"","ship_save":1,"free_shipping":1,"weight":"0.06 LBS","rating":0,"img":"5042813846.jpg","out_of_stock":0,"qty":3},{"prodIdxId":207,"skuId":477072,"title":"Allergy Liquid Cherry Flavored","size":"4 OZ","price":5.99,"discount_price":0,"discount_msg":"","ship_save":1,"free_shipping":1,"weight":"0.06 LBS","rating":0,"img":"5042813846.jpg","out_of_stock":0,"qty":3},{"prodIdxId":207,"skuId":477072,"title":"Allergy Liquid Cherry Flavored","size":"4 OZ","price":5.99,"discount_price":0,"discount_msg":"","ship_save":1,"free_shipping":1,"weight":"0.06 LBS","rating":0,"img":"5042813846.jpg","out_of_stock":0,"qty":3},{"prodIdxId":207,"skuId":477072,"title":"Allergy Liquid Cherry Flavored","size":"4 OZ","price":5.99,"discount_price":0,"discount_msg":"","ship_save":1,"free_shipping":1,"weight":"0.06 LBS","rating":0,"img":"5042813846.jpg","out_of_stock":0,"qty":3},{"prodIdxId":207,"skuId":477072,"title":"Allergy Liquid Cherry Flavored","size":"4 OZ","price":5.99,"discount_price":0,"discount_msg":"","ship_save":1,"free_shipping":1,"weight":"0.06 LBS","rating":0,"img":"5042813846.jpg","out_of_stock":0,"qty":3},{"prodIdxId":207,"skuId":477072,"title":"Allergy Liquid Cherry Flavored","size":"4 OZ","price":5.99,"discount_price":0,"discount_msg":"","ship_save":1,"free_shipping":1,"weight":"0.06 LBS","rating":0,"img":"5042813846.jpg","out_of_stock":0,"qty":3},{"prodIdxId":207,"skuId":477072,"title":"Allergy Liquid Cherry Flavored","size":"4 OZ","price":5.99,"discount_price":0,"discount_msg":"","ship_save":1,"free_shipping":1,"weight":"0.06 LBS","rating":0,"img":"5042813846.jpg","out_of_stock":0,"qty":3}] 
{"prodIdxId":207,"skuId":477072,"title":"Allergy Liquid Cherry Flavored","size":"4 OZ","price":5.99,"discount_price":0,"discount_msg":"","ship_save":1,"free_shipping":1,"weight":"0.06 LBS","rating":0,"img":"5042813846.jpg","out_of_stock":0,"qty":3}] 
0

請看這裏http://plnkr.co/edit/bj0NWJnjgNUbHcFX1Wvw?p=preview

for (var ii = 0; ii < productItems.length; ii++) { 
        for (var jj = 0; jj < products.length; jj++) { 
         if (productItems[ii] == products[jj].id) { 
//add this line to your code 
          thisProduct = {}; 
          thisProduct.prodIdxId = products[jj].id; 
          thisProduct.skuId = products[jj].skuId; 
          thisProduct.title = products[jj].title; 
          thisProduct.size = products[jj].size; 
          thisProduct.price = products[jj].price; 
          thisProduct.discount_price = products[jj].disc_price; 
          thisProduct.discount_msg = products[jj].discount_msg; 
          thisProduct.ship_save = products[jj].ship_save; 
          thisProduct.free_shipping = products[jj].free_shipping; 
          thisProduct.weight = products[jj].weight; 
          thisProduct.rating = products[jj].rating; 
          thisProduct.img = products[jj].img; 
          thisProduct.out_of_stock = products[jj].oos; 
          thisProduct.qty = products[jj].qty; 
          console.log(thisProduct); 

          $scope.productsList.push(thisProduct); 

          console.log($scope.productsList); 
         } 
        } 
       }