【发布时间】:2014-09-13 12:16:31
【问题描述】:
我正在尝试在我的 Angular 应用程序中使用 PrivatePub。我有一个聊天,消息由 AngularJS 管理,我背后的 API 使用 Rails 运行,在我的控制器中,我使用助手发布到频道,我的问题出在客户端的订阅。这是我尝试做的:
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。我不知道我可以尝试什么其他解决方案。
【问题讨论】:
-
it didn't work没有太多解释。您是如何尝试使用$apply的?发生了什么?抛出错误? -
首先我得到了
Error: $digest already in progress,我找到了一些答案,例如if(!$scope.$$phase) { //$apply },显然不推荐,当我使用它时,我的代码根本没有执行。当我使用 $watch 我的代码被执行但范围没有更新。 -
尝试使用
$timeout,将等待摘要完成 -
我刚刚尝试使用 $timeout,例如 here 范围没有立即更新,我会立即在控制台中收到数据,但在我触发 UI 上的某些事件之前,视图不会更新。就像 Angular 不知道范围获得了一个新值。
标签: ruby-on-rails angularjs publish-subscribe private-pub