将javascript变量分配给angularjs $ scope.options

时间:2016-07-29 15:16:59

标签: javascript angularjs

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

2 个答案:

答案 0 :(得分:1)

正如@maddob所说,你正在使用字符串。 如果要将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});
});

答案 1 :(得分:0)

您可以使用JS数组映射函数来完成将对象数组转换为另一个对象的任务。

&#13;
&#13;
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;
&#13;
&#13;