2013-08-22 89 views
1

如何更新元素我有範圍像下面包含關係

$scope.phones = [ 
    { 
     id: 4, 
     name: "nokia", 
     accessories: [ 
      {id: 1, name: "headset"}, 
      {id: 3, name: "keyboard"}, 
      {id: 5, name: "charger"} 
     ] 
    }, 
    { 
     id: 5, 
     name: "samsung", 
     accessories: [ 
      {id: 5, name: "charger"} 
     ] 
    }, 
    { 
     id: 6, 
     name: "iphone", 
     accessories: [ 
      {id: 1, name: "headset"}, 
      {id: 5, name: "charger"} 
     ] 
    } 
]; 

例如,它們顯示像

-> Phone name 
    -> accesories 

現在我的情況下

如果我更新的配件,是相對於與手機我想更新顯示的記錄,但只更新那些與更新配件有關的記錄。我不想更新整個操作視圖,但只更新與更新的配件綁定的記錄

我該怎麼做?

//編輯

我已經創建了一個手動解決方法

$scope.editAcc = function (idx) { 
      for(var i = 0; i < $scope.phones.length; i++) { 
       var tmpPhone = $scope.phones[i]; 
       for(var j = 0; j < tmpPhone.accessories.length; j++) { 
        var acc = tmpPhone.accessories[j]; 
        if(acc.id == idx) { 
         acc.name = acc.name + " Z"; 
        } 
       } 
      } 

//變種ACC = $ scope.accessories [IDX]; // acc.name = acc.name +「X」; };

但IMO應該有一些功能做

回答

1

我不認爲有更新通過JSON路徑值內置的方式,但你至少可以通過集合使用angular.forEach()循環:

$scope.editAcc = function (idx) { 
    angular.forEach($scope.phones, function (t) { 
     angular.forEach(t.accessories, function(acc){ 
      (acc.id == idx) ? (acc.name += " Z") : null; 
     }); 
    }); 
} 

DEMO

+0

的區別是什麼?循環是一個循環 – Fixus