如何更改JSON元素的值。
我的控制器中有一个像这样的JSON
$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'
正确的方法是什么? 感谢
答案 0 :(得分:1)
首先,在这个函数中:
$scope.newField=function(fieldNameVal) {
var newfield = {
cfgValue: fieldNameVal
};
$scope.cfg.cfgs.splice(0,0,newfield);
$scope.$apply();
};
$ scope。$ apply不需要。去掉它。 其次,很明显$ scope.cfg.cfgs [i]不是一个数组而是一个对象,所以要为它添加一个字段,你可以这样做:
$scope.cfg.cfgs[i].cfgsName = val;