1

让我们在例如按下按钮时执行控件方法中的代码

$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

你能解释一下为什么吗,我不明白这种行为的逻辑。如何防止这种情况?

4

0 回答 0