私はAngularJSアプリケーションを持っています。 アプリケーションの右側に私はクライアントとチャットを続けます。AngularJS ng-repeatはAjaxコール後に更新されません
HTMLは以下の通りです:コントローラで
factory('Poller', ["$http", "store", "URL", function($http, store, URL){
var data = {
"hairdresser_id": store.get("userId")
}
var poller = function(){
return $http.post(URL.url + 'check_for_notifications', data).then(function(res){
return(res.data);
});
}
return {
poll: poller
};
}]);
:
pollData();
function pollData(){
Poller.poll().then(function(res){
$scope.recent_customers_list = res.customers;
console.log($scope.recent_customers_list[0].name);
$scope.recent_client_id = res.clients_id;
$scope.notify = res.notify;
$timeout(pollData, 1000);
});
}
<div class="recent" ng-show="show_chat_list">
<h2></h2>
<div ng-repeat="customer in recent_customer_list track by $index" ng-click="start_chat(recent_client_id[$index])" class='user'>
<a href="#" ng-class="{'red-background': notify[$index]}">
<img ng-src="">
<div class="user-data">
<span class='name'> {{ notify }} </span>
<span class='name'>{{ customer.name }}</span>
</div>
</a>
</div>
</div>
は、私は新しいunformationのための毎秒ポーリングを行う工場を通じてリストを更新しました
console.log関数は常に正しい名前を表示しますが(私がそれを変更したとしても)、htmlではnクライアントのリストの動的変更を反映しません(名前を変更したり、クライアントを追加するなど)。
私は右の$タイムアウト行の前に
$scope.$apply();
または
$scope.$digest;
を挿入すると、私はエラーを取得する:私はラインfunctino後に右適用挿入した場合
Error: [$rootScope:inprog] $digest already in progress
はinsted pollData()とPoller.poll()行の前にこのエラーが表示されます。
Error: [$rootScope:inprog] $apply already in progress
しかし、私のリストはまったく更新されません。私は変更を見るためにリフレッシュする必要があります。 どうすればこの問題を解決できますか?お使いのコントローラで
私はあなたを愛しています。私は必死だった:) – ste