我试图在我的Angular应用中使用PrivatePub。我的聊天和消息由AngularJS管理,我的API背后运行Rails,在我的控制器中我使用助手发布到频道,我的问题在客户端与Subscribe。这是我尝试做的事情:
chat.controller("MessageController", ['$scope','Message','Project', function($scope,Message,Project) {
//Fetch messages
Message.query(function(data) {
$scope.messages = data;
});
PrivatePub.subscribe(Project.channel, function(data, channel) {
$scope.messages.push(data.message);
});
}]);
我试图在我的PrivatePub订阅中使用$ apply和$ watch,无法更新我的范围。我的PrivatePub函数应该在Angular之外,但它收到的数据应该添加到$ scope.I不是我可以尝试的其他解决方案。
答案 0 :(得分:2)
好的我发现了问题,我没有正确使用$apply
,我基本上是这样做的:
$timeout(function () {
$scope.$apply(function($scope) {
PrivatePub.subscribe("/mychannel", function(data, channel) {
$scope.addMessage(data.chat_message);
});
});
}, 0);
而不是:
$timeout(function () {
PrivatePub.subscribe("/mychannel", function(data, channel) {
$scope.$apply(function($scope) {
$scope.addMessage(data.chat_message);
});
});
}, 0);
我想要通知Angular的更改不是函数本身,而是内部发生的事情。只是一个坏用途。