2015-03-19 62 views
2

我想將顏色列動態添加到「解決方案」表。我的代碼基於angularjs和json。我試過如下:angularjs向json數據添加一列

$scope.solutions.push({"color": value2.color}); 

的value2.color是動態生成foreach循環決定,但我不能添加新列,難道我錯了嗎?這裏是Plunker網址:http://plnkr.co/edit/5gK5cBRdLQ6s8Gyy6ad8?p=preview

謝謝!

+0

它是正確的。它顯示任何錯誤? – vamsikrishnamannem 2015-03-19 04:40:02

+2

你能發佈一個鏈接到你的完整的JavaScript源?也許是一個[plunker](http://plnkr.co) – bluetoft 2015-03-19 04:43:41

+0

是你稱它爲value2的原因,它是foreach提供的第二個參數?第二個參數是關鍵,請嘗試value1.color。只是一個想法。 – Aaron 2015-03-19 04:50:54

回答

4

推對象數組相反的,你需要得到該索引的對象,並添加新的特性。

angular.forEach($scope.solutions, function(value1, i) { 
    angular.forEach($scope.eliminations, function(value2, j) { 
     if (value1.alien === value2.alien && value1.world === value2.world){ 
      $scope.solutions[i].color = value2.color; 
     } 
    }); 
}); 

Plunker http://plnkr.co/edit/reLCNHT1XvVuwRSF3873?p=preview

+0

謝謝!它似乎在plunker上工作,但由於某種原因,它甚至不執行forEach循環,如果我不手動將這兩個數組放在那裏。即使我硬編碼這兩個數組,顏色值不能傳遞給視圖時,我按名稱過濾。 – Lisa 2015-03-19 17:54:07

+0

好吧!有用!把循環放在錯誤的地方,我犯了一個愚蠢的錯誤。非常感謝!但爲什麼.push不起作用,而索引方式有效? – Lisa 2015-03-19 21:00:12

+0

@Lisa push將項目追加到數組中,所以它不會修改數組中的對象。 – 2015-03-19 21:01:32

0

由於我不能調用你的解決方案或消除數據結構,所以很難編輯你的plunker。但隨着拉梅什拉金德倫上面所說的,.push只能用於初始化數組

你需要在你的範圍和

$scope.solutionsArray = []; 

,而不是推到$ scope.solutions創建一個數組,你需要推到$ scope.solutionsArray。

您還需要通過添加soultionsArray到您的NG-reapeat

<tr ng-repeat="solution in solutionsArray | filter:SelectedStudent.student_name | filter: {student_name: ''}" > 

這是我能做的最好的,沒有看到你的數據結構來更新您的視圖。我希望這有幫助! goood運氣

+0

嗨,亞倫,謝謝你的回覆!我更新了plunker,我相信$ scope.solutions是一個json數組。我想將消除陣列中的顏色填充到解決方案中。 – Lisa 2015-03-19 15:56:07

0

你可能要更新你的代碼是這樣的:

angular.forEach($scope.solutions, function(value1, key1) { 
    angular.forEach($scope.eliminations, function(value2, key2){ 
     if(value1.alien === value2.alien && value1.world === value2.world){ 
      console.log(value2.color); 
      // value1 is a solution object in the solutions array 
      value1["color"] = value2.color; 

     } 
    }); 
}); 
+0

正確...但我沒有解決方案陣列中的「顏色」鍵,所以它沒有工作......謝謝 – Lisa 2015-03-19 16:08:38