AngularJS プロジェクトでは、$scope.loadEvent を呼び出してイベントのリストを表示できますが、$http と $timeout を使用してサーバーをポーリングするときにビューを更新できません。正しい $http 呼び出しと応答が行われている/受信されていることがわかります。
コントローラーの要約版:
function EventsCtrl ($scope, $http, $timeout) {
$scope.myEvents = new Array();
var newMyEvents = new Array();
$scope.loadEvent = function(eventId) {
$http.get('http...').success(function(result) {
$scope.myEvents.push(result.data);
});
}
$scope.polling = function () {
var poller = function() {
newMyEvents = [];
for(var i=0; i< $scope.myEvents.length; i++) {
$http.get('http...').success(function(result) {
newMyEvents.push(result.data);
});
}
$timeout(poller, 2000);
}
$scope.myEvents = newMyEvents;
poller();
}
}
とビュー:
<div ng-controller="EventsCtrl" ng-init="polling()">
$http がすでに Angular の「内部」にあるように見えるため$scope.$apply()
、 を試しました。Error: $apply already in progress
ありとあらゆる考えに感謝します。ありがとう。