我在范围内有简单的功能,可以多次调用某些服务。我想将检索到的数据附加到范围内的数组中。
$('.example').height(function(i, v) {
if(v > 30) {
$(this).css('background', 'green');
}
});
问题是$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
次的最后推送值。
如果我想从回调中修改范围对象,我应该如何处理范围对象?
答案 0 :(得分:3)
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)
}
}