我在本教程http://g00glen00b.be/spring-websockets-angular/下使用了带有stomp-websockets的angular.js,sock.js。我从websocket获取消息,但在到达websocket的消息后,模板视图不会刷新。当我想更新模板视图时,我需要清除输入框,或者用鼠标滚动。
$scope.initiator = false;
$scope.socket = {
client: null,
stomp: null
};
$scope.initSockets = function() {
$scope.socket.client = new SockJS('/myUrl');
$scope.socket.stomp = Stomp.over($scope.socket.client);
$scope.notifyMessage = function(message) {
$scope.initiator = true;
$scope.messages.push(message)
};
$scope.socket.stomp.connect({}, function() {
$scope.socket.stomp.subscribe("/topic/messages", $scope.notifyMessage);
});
$scope.socket.client.onclose = $scope.reconnect;
};
$scope.initSockets();
template view:
<ul><li ng-repeat="item in messages track by $index">{{item}}</li></ul>
答案 0 :(得分:1)
您可能需要使用范围。$ apply使其生效。 afaics sock.js不是为角度而制作的,所以你需要让角度知道范围发生了变化。您可以使用范围。$ apply。
$scope.notifyMessage = function(message) {
$scope.$apply(function(){
$scope.initiator = true;
$scope.messages.push(message)
});
};