没有用户交互,AngularJS目录不会更新

时间:2015-03-05 07:49:37

标签: javascript angularjs angularjs-directive

我正在处理需要聊天功能的应用程序。它似乎与以下事实不同:为了更新聊天消息列表,我必须在搜索框中执行例如类型的操作,或者单击"发送"按钮。聊天通过websocket服务接收消息(服务正常)。所以似乎目录的DOM在与之交互之前没有得到更新。我也试过在没有目录的情况下放入所有内容,但它仍然无法正常工作。

我无法在JSFiddle上复制这个问题(我不能包含所有代码,但是这个代码需要的基础就在那里)。

我正在寻找关于为什么会发生这种情况的想法。这可能是事件范围的问题吗?还有WebsocketManagerService,P2PManagerService和ConnectionManagerService(这连接了WS / P2P服务),但我认为它并不相关。

发送聊天讯息:

EventManagerService.emit('chat message', 'some message');

收到聊天讯息:

EventManagerService.on(EventManagerService.EVENTS.RECEIVED_CHAT_MESSAGE, function (data) {
    $scope.chatMessages.push({user: 'Client', message: data});
});

http://jsfiddle.net/Iber/6qkdnv3w/

1 个答案:

答案 0 :(得分:1)

我相信你的模型没有更新。

尝试这样做:

EventManagerService.on(EventManagerService.EVENTS.RECEIVED_CHAT_MESSAGE,      function (data) {
$scope.chatMessages.push({user: 'Client', message: data});
if (!$scope.$$phase) $scope.$apply()
});

这可能是一个更好的解决方案,但这会涉及重做当前很多代码。