首页 文章

角度数组不更新视图

提问于
浏览
0

我正在使用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'数组时,它不会被渲染,除非有按键或鼠标事件 . 我已经检查过,没有按键或鼠标事件监听器 . 该视图现在正在以某种方式自动更新 .

有人可以告诉我这个问题吗?

2 回答

  • 0

    我认为你已经使用ajax推送你的数据了 .

    jQuery ajax是出于角度的能力,你需要像下面一样包装,它会告诉$ scope.message还要更新和更新视图 .

    推送数据后尝试应用...

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

    以下代码为我工作,每当你从套接字获得新消息时,你只需要在$ scope中绑定你的(UI更新相关)代码 . $ apply()函数

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

相关问题