【发布时间】:2015-10-10 17:59:20
【问题描述】:
我在我的应用程序中遇到了一些问题,我使用 setInterval 每 X 秒轮询一次服务器以检查新消息,当它找到它们时,它会将它们添加到应用程序的 SQLite 数据库中并更新包含屏幕上位移数据的对象。
问题在于这些值不会自动更新,您可以在下面通过此 sn-p 提供的示例中看到。只需单击该按钮,您就会很快注意到ng-repeat 或标准{{variable}} 显示中没有发生任何事情。
再次点击按钮,突然间你有了一些结果,但它们不一致且具有爆炸性。
var app = angular.module('app', [])
.controller('Ctrl', function($scope) {
$scope.console = "";
$scope.arr = [];
$scope.init = function() {
setInterval(function() {
$scope.arr.push("Value");
}, 1000);
};
$scope.start = function() {
alert("Started");
$scope.init();
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script>
<div ng-app="app" ng-controller="Ctrl">
<button ng-click="start()">Start Example</button>
<br>
<h5>For each:</h5>
<div id="repeat-container" ng-repeat="x in arr">
Value index: {{$index}}
<br>
</div>
<hr>Updating value of array: {{arr}}
<hr>
<h5>Console:</h5>
{{console}}
<div>
我亲自与ng-repeat 合作,试图让这些值在通过setInterval 更新时正确显示。我在那里添加了一个自定义调试控制台,考虑到console.log 在 sn-ps 上没有显示任何内容(除非它在调试窗口中,我没有检查过,因为我是个白痴)。
他们为什么不更新?通常,Angular 在保持页面上的所有内容更新并与范围内的值同步方面做得非常好。
【问题讨论】:
标签: javascript angularjs