Javascript 角度阵列不更新视图
我正在使用angularJs、socketIo实现一个聊天模块。(和后端的nodeJS) 在angular中,有一个数组附加到作用域:$scope.messages。 对于聊天客户端,所有消息都被推送到该数组中,该数组在视图中使用ng repeat呈现Javascript 角度阵列不更新视图,javascript,arrays,angularjs,socket.io,chat,Javascript,Arrays,Angularjs,Socket.io,Chat,我正在使用angularJs、socketIo实现一个聊天模块。(和后端的nodeJS) 在angular中,有一个数组附加到作用域:$scope.messages。 对于聊天客户端,所有消息都被推送到该数组中,该数组在视图中使用ng repeat呈现 <div class="chat-window"> <div class="chat-message" ng-repeat="message in messages track by $index">{{messa
<div class="chat-window">
<div class="chat-message" ng-repeat="message in messages track by $index">{{message}} </div>
</div>
{{message}}
但是,当我将元素推入“messages”数组时,它不会被渲染,除非有按键或鼠标事件。我已经检查过了,没有按键或鼠标事件侦听器。视图现在正在自动更新
有人能告诉我这个问题吗?我想您已经使用ajax推送了数据 jQueryAjax已经超出angular的能力,您需要像下面这样包装,它会告诉$scope.message将要更新,并且还会更新视图 推送数据后,请尝试应用
$scope.$apply(function(){
$scope.message= data;
});
下面的代码对我来说很有用,每当您从套接字收到新消息时,您只需要将(与UI更新相关的)代码绑定到$scope.$apply()函数中
可以发布控制器的代码吗?请在元素被推入
$scope.messages
数组后运行$scope.$apply()
。
socket.on = function (e) {
$scope.$apply(function () {
//user code to update UI
});
};