2016-07-29 15 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あなたは文字列で作業していると述べました。あなたがオブジェクトにJSON文字列を変換したい場合は 、angular.fromJson を試してみてくださいしかし、あなたは直接オブジェクトを生成したい場合は、 まず私は、ループを使用angular.forEachや配列などのinit teststuffres前に(ここではリンクhttps://docs.angularjs.org/api/ng/function/angular.forEachである)のための代わりの推薦

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

関連する問題