javascript - 如果没有用户交互,AngularJS 目录不会更新

标签 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/

最佳答案

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

尝试这样做:

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

可能有更好的解决方案,但这需要重做大量当前代码。

关于javascript - 如果没有用户交互,AngularJS 目录不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28872595/

相关文章:

javascript - AngularJS - 在指令中绑定(bind)多个类

Javascript - 为什么用 IIFE 返回一个闭包?

javascript - 从我的浏览器运行 C++ 程序,发送输入并显示输出

javascript - 剪辑路径不遵守 d3js 中的轴

javascript - 验证指令内具有动态名称的表单

javascript - 如何制作 Angularjs 嵌套路由?

javascript - 在 AngularJS 1.X 中使用 Monaco 编辑器

javascript - 在 ipad 上触发 unhover/mouseout/blur

javascript - AngularJs每条路由调用http的正确方法

angularjs - Angular 指令检查是否在隔离范围内设置了可选绑定(bind)