AngularJS-$手表不工作
场景:将跺脚与我们的角度。在用户登录时,调用发送数据的stomp服务,然后在模块控制器中获取数据 跺脚服务AngularJS-$手表不工作,angularjs,websocket,stomp,sockjs,Angularjs,Websocket,Stomp,Sockjs,场景:将跺脚与我们的角度。在用户登录时,调用发送数据的stomp服务,然后在模块控制器中获取数据 跺脚服务 var wrappedSocket = { init: function(url) { stompClient = Stomp.over(new SockJS(url)); }, connect: function(successCallback, errorCallback) { stompClient.connect({}, f
var wrappedSocket = {
init: function(url) {
stompClient = Stomp.over(new SockJS(url));
},
connect: function(successCallback, errorCallback) {
stompClient.connect({}, function(frame) {
//$rootScope.$apply(function() {
$timeout(function () {
successCallback(frame);
});
}, function(error) {
//$rootScope.$apply(function(){
$timeout(function () {
errorCallback(error);
});
});
},
subscribe : function(destination, callback) {
stompClient.subscribe(destination, function(message,headers) {
//$rootScope.$apply(function(){
$timeout(function () {
callback(message,headers);
});
});
},
send: function(destination, headers, object) {
stompClient.send(destination, headers, object);
}
}
return wrappedSocket;
模块控制器
var initializing = false;
$timeout(function () {
alert('timeout');
$scope.$watch(svc.getMessage, function (v) {
if (initializing) {
$timeout(function () { initializing = false; });
} else {
if (v != '') {
console.log(v);
$scope.notifications = v;
$scope.notification_count = $scope.notifications.length;
}
}
});
}, 3000);
这里svc是Sockjssvc.setMessage($scope.messages)的一个实例代码>
最终将服务中的$rootScope.$apply(function(){
更改为$timeout(function(){
)。但后来在模块控制器中发现,$watch
不工作/调用
预期结果-应在$watch
发生了什么事-$watch未调用导致未显示踩踏消息
如何调用$scope.$watch(svc.getMessage,
功能(v)
$watch
的替代解决方案每次都有效吗
了解到使用$rootScope.$apply(function(){不是一个好的做法:实际上,调用它是为了让angular知道背后发生的更改。什么是svc.getMessage?为什么在3秒钟后开始观看?您希望发生什么以及会发生什么?了解到使用$rootScope.$apply(function(){不是一个好的做法:实际上,调用它来让angular知道背后发生的更改是正确的。什么是svc.getMessage?为什么在3秒钟后开始观看?您希望发生什么,以及会发生什么?