AngularJS 目录在没有用户交互的情况下不会更新
AngularJS directory doesn't update without user interaction
我正在开发一个需要聊天功能的应用程序。除了为了更新聊天消息列表之外,它似乎还可以工作,我必须执行一个操作,例如在搜索框中键入内容或单击 "Send" 按钮。 Chat 通过 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});
});
我相信你的模型没有更新。
尝试这样做:
EventManagerService.on(EventManagerService.EVENTS.RECEIVED_CHAT_MESSAGE, function (data) {
$scope.chatMessages.push({user: 'Client', message: data});
if (!$scope.$$phase) $scope.$apply()
});
可能有更好的解决方案,但这需要重做大量当前代码。
我正在开发一个需要聊天功能的应用程序。除了为了更新聊天消息列表之外,它似乎还可以工作,我必须执行一个操作,例如在搜索框中键入内容或单击 "Send" 按钮。 Chat 通过 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});
});
我相信你的模型没有更新。
尝试这样做:
EventManagerService.on(EventManagerService.EVENTS.RECEIVED_CHAT_MESSAGE, function (data) {
$scope.chatMessages.push({user: 'Client', message: data});
if (!$scope.$$phase) $scope.$apply()
});
可能有更好的解决方案,但这需要重做大量当前代码。