Ответ 1
Вы завернули обновление в
$scope.$apply(function() {
// update goes here
});
? Это должно решить проблему.
Я использую 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
, он не переопределяет мою таблицу новыми данными.
Как мне решить эту проблему?
Вы завернули обновление в
$scope.$apply(function() {
// update goes here
});
? Это должно решить проблему.
Вероятно, вам нужно вызвать $apply()
, чтобы заставить angular выполнять цикл дайджеста при обновлении списка, например:
WebSocket.start(function(data) {
$scope.$apply(function(){
/* your stuff goes here*/
});
});
Следующий код работает для меня. Всякий раз, когда вы получаете сообщение из сокета, вам просто нужно связать свой код внутри $scope. $apply() function
socket.on = function (e) {
$scope.$apply(function () {
// update you UI over here
});
};