让我们在例如按下按钮时执行控件方法中的代码
$timeout(function() {
$scope.names = ['A', 'B', 'C'];
}, 0, false).then(function() {
$scope.names.push('D');
})
在这种情况下,我们不会在屏幕上看到任何变化,因为摘要循环不会运行
但是如果我们写这个
$timeout(function() {
$scope.names = ['A', 'B', 'C'];
}, 0, false).then(function() {
$scope.names.push('D');
return $q.when();
})
我们会看到变化,因为当我们返回 promise 时,$Q 提供者决定运行摘要循环。 http://plnkr.co/edit/DqAzPBe37Qd9CU1ug8Pp?p=preview
你能解释一下为什么吗,我不明白这种行为的逻辑。如何防止这种情况?