AngularJS ng重复更新模型

时间:2013-12-15 21:12:59

标签: javascript angularjs angularjs-ng-repeat

我使用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时,它不会使用新数据重新呈现我的表格。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:25)

您是否将更新包装在

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

?这应该可以解决问题。

答案 1 :(得分:3)

更新列表时,您可能需要调用$apply()强制角度进行摘要循环,例如:

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

答案 2 :(得分:0)

以下代码为我工作,每当你从socket获取消息时,你只需要在$ scope中绑定你的代码。$ apply()function

 socket.on = function (e) {

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

        };