2016-07-29 131 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);