我在范围内有一个简单的函数,可以多次调用某些服务。我想将检索到的数据附加到范围内的数组中。
$scope.foo = function(){
$scope.someArray = [];
for(var i = 0; i < something.length; i++){
var name = something[i];
FooService.someMethod($resource, name).then(function (result) {
if(result){
$scope.someArray.push(name);
}
}
}
}
问题是结果中的 someArray
填充了一组相同的值。这是最后推送的值,重复 something.length
次。
如果我想从回调中修改作用域对象,我应该如何处理它们?
最佳答案
for
循环是同步的,而您的 $http
调用则不是。
$scope.foo = function(){
$scope.someArray = [];
for(var i = 0; i < something.length; i++){
(function(i){
var name = something[i];
FooService.someMethod($resource, name).then(function (result) {
if(result){
$scope.someArray.push(name);
}
}
})(i)
}
}
关于javascript - 如何从 Angular 回调中更改范围对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37132921/