我使用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
时,它不会使用新数据重新呈现我的表格。
我该如何解决这个问题?
答案 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
});
};