1

このチュートリアルhttp://g00glen00b.be/spring-websockets-angular/の下で、stomp-websockets、sock.js で angular.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>
4

1 に答える 1

1

これを有効にするには、おそらく scope.$apply を使用する必要があります。afaics sock.js は angular 用に作成されていないため、スコープで何かが変更されたことを angular に知らせる必要があります。これは、scope.$apply を使用して行います。

$scope.notifyMessage = function(message) {
   $scope.$apply(function(){
       $scope.initiator = true;
       $scope.messages.push(message)
   });
};
于 2014-06-11T12:08:13.533 に答える