Подтвердить что ты не робот

Модель обновления AngularJS ngRepeat

Я использую ng-repeat для рендеринга html table. Мой контроллер выглядит так:

app.controller("fooCtrl", function($scope, WebSocket) {
  $scope.foo = [ ... ];

  WebSocket.start(function(data) {
    // this is a callback on websocket.onmessage
    // here is a for loop iterating through $scope.foo objects and updating them
  });
});

Как вы можете видеть, я периодически обновляю массив $scope.foo. Однако мой взгляд построен так:

<tr ng-repeat="item in foo">
  ...
</tr>

Проблема в том, что когда я обновляю foo, он не переопределяет мою таблицу новыми данными.

Как мне решить эту проблему?

4b9b3361

Ответ 1

Вы завернули обновление в

$scope.$apply(function() {
  // update goes here
});

? Это должно решить проблему.

Ответ 2

Вероятно, вам нужно вызвать $apply(), чтобы заставить angular выполнять цикл дайджеста при обновлении списка, например:

 WebSocket.start(function(data) {
   $scope.$apply(function(){
      /* your stuff goes here*/
    });
  });

Ответ 3

Следующий код работает для меня. Всякий раз, когда вы получаете сообщение из сокета, вам просто нужно связать свой код внутри $scope. $apply() function

 socket.on = function (e) {

            $scope.$apply(function () {
               // update you UI over here
            });

        };