2016-08-09 17 views
1

私は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 

しかし、私のリストはまったく更新されません。私は変更を見るためにリフレッシュする必要があります。 どうすればこの問題を解決できますか?お使いのコントローラで

答えて

0

私はこれは単純なタイプミスであると信じて、あなたは

$scope.recent_customers_list 

を使用しているが、あなたのHTMLでは、あなたは

recent_customer_list 

を使用しています。

+0

私はあなたを愛しています。私は必死だった:) – ste

関連する問題