我是angularjs的新手并且一直在努力,这似乎是一项简单的任务,并且希望有人可以帮助我。以下代码在我的控制器中。我正在动态生成需要添加到$ scope.options的数据。
这就是我的数据:[{ name: "a", id: 1 }, { name: "b", id: 2 }];
这有效:
$scope.options = [{ name: "a", id: 1 }, { name: "b", id: 2 }];
这不起作用:
var res = [{ name: "a", id: 1 }, { name: "b", id: 2 }];
$scope.options = res;
控制器:
for (var i = 0; i < jsonArray.length; i++) {
if(i == (numberofitems-1)){
teststuff += "{name:\""+jsonArray[i]["pondpitname"]+"\", id:"+jsonArray[i]["id"]+"}";
}
else
{
teststuff += "{name:\""+jsonArray[i]["pondpitname"]+"\", id:"+jsonArray[i]["id"]+"}, ";
}
}
// teststuff looks like this [{ name: "a", id: 1 }, { name: "b", id: 2 }];
var res = "["+teststuff+"]";
$scope.options = res;
答案 0 :(得分:1)
正如@maddob所说,你正在使用字符串。
如果要将json字符串转换为对象,请尝试angular.fromJson
但是如果你想直接生成对象,
首先,我建议而不是循环使用angular.forEach
(此处为链接https://docs.angularjs.org/api/ng/function/angular.forEach),并在init teststuff
或res
之前作为数组
var result = [];
angular.forEach(jsonArray, function(value) {
result.push({id: value.id, name: value.pondpitname});
});
答案 1 :(得分:0)
您可以使用JS数组映射函数来完成将对象数组转换为另一个对象的任务。
var data = [
{ pondpitname: "test1", id: 1, blah:"meh", sfsa:"asf" },
{ pondpitname: "test2", id: 2, blah:"meh", sfsa:"asf" },
{ pondpitname: "test3", id: 3, blah:"meh", sfsa:"asf" },
{ pondpitname: "test4", id: 4, blah:"meh", sfsa:"asf" }
];
var result = data.map(o => { return { name: o.pondpitname, id: o.id }; });
console.log(result);
&#13;