角度阵列未更新视图

Angular array not updating view

本文关键字:更新 新视图 阵列      更新时间:2023-09-26

我正在使用angularJs,socketIo实现一个聊天模块。(以及用于后端的nodeJS)。

在angular中,有一个数组附加到scope:$scope.messages。对于聊天客户端,所有消息都被推送到这个数组中,并且这个数组在视图中使用ng repeat呈现。

<div class="chat-window">
    <div class="chat-message" ng-repeat="message in messages track by $index">{{message}}        </div>
</div>

然而,当我将元素推入"messages"数组时,它不会被渲染,除非出现按键或鼠标事件。我已经检查过了,没有按键或鼠标事件侦听器。视图现在正在自动更新。

有人能给我提一下这个问题吗?

我认为您已经使用ajax推送了数据。

jQueryajax没有angular的功能,你需要像下面这样包装,它会告诉$scope.message也将更新和更新视图。。

推送数据后,尝试应用。。。

$scope.$apply(function(){
    $scope.message= data;
});

下面的代码对我来说很有效,每当你从套接字收到新消息时,你只需要将你的(与UI更新相关的)代码绑定到$scope中$apply()函数

 socket.on = function (e) {
            $scope.$apply(function () {
                //user code to update UI
            });
        };