Javascript 角度阵列不更新视图

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

我正在使用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>

{{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

            });

        };