web-dev-qa-db-fra.com

AngularJS ng Repeat update model

J'utilise ng-repeat pour rendre un html table. Mon contrôleur ressemble à ceci:

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
  });
});

Comme vous pouvez le constater, je mets à jour le tableau $scope.foo périodiquement. Cependant, mon point de vue est construit comme suit:

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

Le problème est que, lorsque je mets à jour foo, la nouvelle table ne sera pas rendue avec de nouvelles données.

Comment pourrais-je résoudre ce problème?

13
if __name__ is None

Avez-vous terminé la mise à jour

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

? Cela devrait résoudre le problème.

25
lex82

Vous devez probablement appeler $apply() pour forcer angular à effectuer un cycle de résumé lors de la mise à jour de la liste, par exemple:

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

Après le code fonctionne pour moi, chaque fois que vous recevez un message de socket, vous devez simplement lier votre code dans $ scope.

 socket.on = function (e) {

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

        };
0
Sachin Nikumbh