2014-02-10 53 views
0

如何更改JSON元素的值。AngularJS - 更改JSON值

我有一個這樣的JSON在我CONTROLER

$scope.cfg= { 
     "cfgName" : "Name", 
     "cfgs": [ 
     { 
      "cfgsName": "form.0", 
      "cfgValue": "hello" 
     }, 
     { 
      "cfgsName": "form.1", 
      "cfgValue": "fname" 
     }, 
     { 
      "cfgsName": "form.2", 
      "cfgValue": "how?" 
     } 
     ] 
    }; 

現在我有一個場中cfgs陣列添加作爲第一元件的方法。

$scope.newField=function(fieldNameVal) { 
    var newfield={ 
      "cfgValue": fieldNameVal 
    }; 
    $scope.cfg.cfgs.splice(0,0,newfield); 
    $scope.$apply(); 
}; 

以上工作正常。但是我想改變數組中每個數組的值cfgValue,以便數值看起來像索引一樣。

增加新項之後的必需的JSON字符串是

{ 
    "cfgName": "Name", 
    "cfgs": [ 
    { 
     "cfgsName": "form.0", 
     "cfgValue": "someVal" 
    }, 
    { 
     "cfgsName": "form.1", 
     "cfgValue": "hello" 
    }, 
    { 
     "cfgsName": "form.2", 
     "cfgValue": "fname" 
    }, 
    { 
     "cfgsName": "form.3", 
     "cfgValue": "how?" 
    } 
    ] 
} 

我曾嘗試添加項之後內部newField()方法下面的代碼。

for(var i=0;i<$scope.cfg.cfgs.length;i++) { 
      var val="engine.form."+i; 
      $scope.cfg.cfgs[i].push({"cfgsName" : val}); 
     } 

但它顯示錯誤。

Uncaught TypeError: Object #<Object> has no method 'push' 

什麼是正確的方法?不需要

$scope.newField=function(fieldNameVal) { 
    var newfield = { 
     cfgValue: fieldNameVal 
    }; 
    $scope.cfg.cfgs.splice(0,0,newfield); 
    $scope.$apply(); 
}; 

$範圍$適用於: 感謝

回答

1

首先,在此功能。去掉它。 其次,很明顯$ scope.cfg.cfgs [i]不是一個數組,而是一個對象,所以要添加一個字段,你應該這樣做:

$scope.cfg.cfgs[i].cfgsName = val;