【发布时间】:2017-12-23 02:27:46
【问题描述】:
如果数组在函数内部更新,则视图不会更新。虽然,如果我在 array.push 之后 console.log 数组,那么它会显示更新后的数组。我在 $timeout 中尝试过 $scope.apply() 仍然不起作用。
JavaScript:
$scope.openQuestions = [];
$scope.openQuestions.push({value: '1', question: 'abc1'});
$timeout(function() {
$scope.$apply(function() {
$scope.fetchOpen();
});
}, 500);
console.log($scope.openQuestions); //shows the updated value
$scope.fetchOpen = function() {
$scope.openQuestions.push({value: '2', question: 'abc2'});
}
HTML
<ul>
<li ng-repeat = "question in openQuestions">
<p>{{question.question}} </p>
</li>
</ul>
结果:abc1
【问题讨论】:
-
$timeout 服务会自动调用 $apply,所以它是不必要的并且可能会导致Error: $rootScope:inprog Action Already In Progress
-
您应该检查开发人员控制台日志以查看是否没有错误,因为 georgeawg 正在谈论多余的 $apply 并删除 $apply。
-
无法验证问题。在这个DEMO on PLNKR 中工作正常。
-
@georgeawg 是的,它在大多数情况下都可以工作,但在不同的机器上它不会工作几次,实际上,该数组只是一个样本我在该数组中有多个对象,长度约为100.
-
@georgeawg 该数组在网络推送通知点击时更新,并在点击后在开发者控制台中显示更新后的数组,但有时它不会更新视图,因此不稳定。
标签: javascript angularjs arrays angularjs-ng-repeat