我正在使用angularJs,socketIo实现聊天模块。 (和后端的nodeJS)。
在angular中有一个附加到范围的数组:$ scope.messages。 对于聊天客户端,所有消息都被推送到此数组中,并使用ng-repeat在视图中呈现此数组。
<div class="chat-window">
<div class="chat-message" ng-repeat="message in messages track by $index">{{message}} </div>
</div>
然而,当我将元素推入'messages'数组时,除非有按键或鼠标事件,否则它不会被渲染。我已经检查过,没有按键或鼠标事件监听器。该视图现在正在以某种方式自动更新。
有人可以告诉我这个问题吗?
答案 0 :(得分:1)
我认为您已使用ajax推送数据。
jQuery ajax是出于角度的能力,你需要像下面那样换行,它会告诉$ scope.message还要更新和更新视图..
推送数据后尝试应用...
$scope.$apply(function(){
$scope.message= data;
});
答案 1 :(得分:0)
以下代码为我工作,每当你从套接字获得新消息时,你只需要在$ scope中绑定你的(UI更新相关)代码。$ apply()function
socket.on = function (e) {
$scope.$apply(function () {
//user code to update UI
});
};