【问题标题】:Angular array not updating view角度数组不更新视图
【发布时间】:2015-01-07 14:22:24
【问题描述】:

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

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

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

但是,当我将元素推入“消息”数组时,它不会被渲染,除非有按键或鼠标事件。我已经检查过,没有按键或鼠标事件侦听器。该视图现在以某种方式自动更新。

有人可以建议我这个问题吗?

【问题讨论】:

  • 你能贴出你的控制器代码吗?
  • 尝试在将元素推入$scope.messages 数组后运行$scope.$apply()

标签: javascript arrays angularjs socket.io chat


【解决方案1】:

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

jQuery ajax 没有 Angular 的能力,你需要像下面这样包装,它会告诉 $scope.message 也将更新和更新视图..

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

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

【讨论】:

    【解决方案2】:

    以下代码对我有用,每当您从套接字收到新消息时,您只需在 $scope.$apply() 函数中绑定您的(与 UI 更新相关的)代码

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2016-10-23
      • 2018-04-02
      相关资源
      最近更新 更多