【问题标题】:Javascript doesn't update DOM until user interactionJavascript 在用户交互之前不会更新 DOM
【发布时间】:2016-05-15 16:48:13
【问题描述】:

我正在使用 angularJS 和 signalR 向我的网站添加聊天功能。它现在非常简单......我的角度控制器维护着一系列聊天日志,并且 打印出来:

         <div ng-repeat="log in vm.logs">{{log.sender}}: {{log.msg}}</div>

所有的接线工作,我已经通过 console.log() 验证了消息正在被立即接收。但是,在我与页面交互之前,似乎 DOM 不会更新(例如将鼠标悬停在另一个附加了角度动作的组件上)。我不确定这是角度问题还是javascript问题。有什么想法吗?

我在 Facebook 等网站上看到过这个,我认为这是设计使然,但它看起来像是浏览器/javascript 的东西。

【问题讨论】:

  • 如何在控制器的数组中添加元素?你在上面的代码中写了 vm.logs 你确定它是好的控制器名称吗?
  • 您是否在 signalR 的回调中调用了 $scope.$apply()?

标签: javascript html angularjs signalr


【解决方案1】:

使用 $timeout 并使用函数包装您的 vm.logs 范围数组。 $timeout 自动调用 angulars 摘要循环,你的 dom 应该开始更新。

【讨论】:

  • 是的,已经在使用 $timeout。对不起,应该提到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多