Javascript 我能';t通过循环为角度范围变量指定新值
我真的不明白为什么angular在迭代时不能对作用域变量上的数组进行简单的动态赋值,我使用angular.js 1.1.5编写了以下脚本:Javascript 我能';t通过循环为角度范围变量指定新值,javascript,angularjs,Javascript,Angularjs,我真的不明白为什么angular在迭代时不能对作用域变量上的数组进行简单的动态赋值,我使用angular.js 1.1.5编写了以下脚本: function assign(item){ item.var2 = 10; item.var1 = 20; } for (var i=0; i < $scope.container.items.length; i++) { $scope.container.items[i].var1 = 10; } for (var i=0; i
function assign(item){
item.var2 = 10;
item.var1 = 20;
}
for (var i=0; i < $scope.container.items.length; i++) {
$scope.container.items[i].var1 = 10;
}
for (var i=0; i < $scope.container.items.length; i++) {
assign($scope.container.items[i]);
console.log($scope.container.items[i].var2); // 10
console.log($scope.container.items[i].var1); // 20
}
console.log($scope.container.items);
// [{'var2': 10, 'var1': 10},
// {'var2': 10, 'var1': 10},
// ...
// {'var2': 10, 'var1': 10}]
功能分配(项目){
项目2=10;
项目1=20;
}
对于(变量i=0;i<$scope.container.items.length;i++){
$scope.container.items[i].var1=10;
}
对于(变量i=0;i<$scope.container.items.length;i++){
分配($scope.container.items[i]);
console.log($scope.container.items[i].var2);//10
console.log($scope.container.items[i].var1);//20
}
log($scope.container.items);
//[{'var2':10,'var1':10},
//{'var2':10,'var1':10},
// ...
//{'var2':10'var1':10}]
老实说,Angularjs不清楚这个问题,我希望尽快解决。我试过使用$apply(将调用包装到函数assign),但似乎也不起作用。你知道发生了什么吗?看起来就像你在中预期的那样运行(上一个console.log报告20,10)。也许你可以看看fiddle,看看它与代码的其他部分相比如何?@KayakDave你的例子是正确的,但现在我意识到存在一个异步函数,它在'assign'函数中被调用,该函数会更改值几毫秒后。。。你的例子让我相信角度不是问题,非常感谢你!