让我们在控件的方法中执行代码,例如,当我们按下按钮时
$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
请你解释一下为什么,我不明白这种行为的逻辑。 怎么预防这个?