2016-07-29 122 views
0

我是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

你是什么意思它 “作品” 与 “不工作”? –

+2

你有使用字符串构造这个数组的特殊原因吗? – horyd

+1

似乎你的** res **变量是一个字符串,而不是一个数组,也许这就是为什么它不起作用 – maddob

回答

1

由于@madd ob提到你正在使用字符串。 如果你想JSON字符串转换为对象,尝试angular.fromJson 但如果你想直接生成对象, 首先,我会代替推荐循环使用angular.forEach(这里是链接https://docs.angularjs.org/api/ng/function/angular.forEach)和init teststuffres作为阵列之前

var result = []; 
angular.forEach(jsonArray, function(value) { 
    result.push({id: value.id, name: value.pondpitname}); 
}); 
+0

这对我有用。谢谢。 – ryanh

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);