2014-02-10 31 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;