我是angularjs的新手,我想与我的服务器建立连接并动态地向用户显示结果。到目前为止,我已经尝试过:
angular.module('myApp.controllers', []).controller('socketsController', function($scope) {
$scope.socket = {
client: null,
stomp: null
};
$scope.reconnect = function() {
setTimeout($scope.initSockets, 10000);
};
$scope.notify = function(message) {
$scope.result = message.body;
};
$scope.initSockets = function() {
$scope.socket.client = new SockJS('/resources');
$scope.socket.stomp = Stomp.over($scope.socket.client);
$scope.socket.stomp.connect({}, function() {
$scope.socket.stomp.subscribe('/user/topic/messages', $scope.notify);
});
$scope.socket.client.onclose = $scope.reconnect;
};
$scope.initSockets();
});
但是当我使用{{result}}
时,没有任何内容出现。
UPDATE 服务器响应完全正确
console.log(message.body)
。
答案 0 :(得分:1)
我猜,回调并没有正确考虑范围。尝试调用$ scope。$ apply();将message.body附加到结果后:
$scope.notify = function(message) {
$scope.result = message.body;
$scope.$apply();
};
$ scope。$ apply()触发一个角度摘要周期,它将更新所有绑定..
答案 1 :(得分:1)
在超时函数中调用它,但首先注入$ timeout,它将调用摘要周期并更新值。
$timeout(function(){
$scope.result = message.body;});