我正在尝试学习角度,我有一个示例代码片段如下:
$scope.contents = [{
name: 'Chris Doe',
abbreviation: 'Developer',
},{
name: 'Ann Doe',
abbreviation: 'Commerce',
},{
name: 'Mark Ronson',
abbreviation: 'Designer',
},{
name: 'Eric Doe',
abbreviation: 'Human Resources',
},{
name: 'John Doe',
abbreviation: 'Commerce',
},{
name: 'George Doe',
abbreviation: 'Media',
},{
name: 'Ann Ronson',
abbreviation: 'Commerce',
},{
name: 'Adam Ronson',
abbreviation: 'Developer',
},{
name: 'Hansel Doe',
abbreviation: 'Social Media',
},{
name: 'Tony Doe',
abbreviation: 'CEO',
}];
哪个工作正常,但我想从API获取数据,然后将数据加载到$scope.contents
。我尝试过以下方法:
$http(req).success(function(res) {
console.log(res);
for (var i = 0; i < res.length; i++) {
console.log(res[i]);
//add data into scope contents here .add(res[i])
}
}).error(function (err) { console.log(err) });
这是有效的,我能够遍历从我的API返回的数据的对象,但是我无法弄清楚将返回的数据添加到$scope.contents
的语法是什么?这样做的正确方法是什么?有一个更好的方法吗?比如将$scope.contents
作为一个类并将数据添加为新实例?
答案 0 :(得分:5)
您可以使用Array#concat
:
$scope.contents = $scope.contents.concat(res);
显然,您首先要确保$scope.contents
已经是一个数组:
if (! Array.isArray($scope.contents)) {
$scope.contents = [];
}
$scope.contents = $scope.contents.concat(res);
答案 1 :(得分:2)
$scope.contents
是一个数组,因此您可以将新对象推送到它。
$http(req).success(function(res) {
console.log(res);
for (var i = 0; i < res.length; i++) {
console.log(res[i]);
$scope.contents.push(res[i]);
}
}).error(function (err) { console.log(err) });
从您的示例中res[i]
包含的内容并不明显。上面的代码假设它已经是正确的对象。如果没有,请取下并放置正确的值。
$scope.contents.push({
name: res[i].name,
abbreviation: res[i].abbreviation,
}); // example -- change to match your data
答案 2 :(得分:1)
$ scope.contents看起来像一个数组......
$scope.contents.push(res[i]);