javascript - 由于事件导致模型更改后,AngularJS 不刷新 View

标签 javascript events view angularjs model

我已经准备好了a Plunker使用我正在编写代码的应用程序的简化场景。

场景的一些解释:

  • 有一个 Controller 将事务列表(事务类型的对象)加载到 $scope 中
  • 此 Controller 监听由负责保存新的或更新的事务对象的服务产生的事件,然后重新加载模型
  • View 使用 ng-repeat 呈现交易列表
  • 每个事务都可以单独更新(提交或回滚)
  • AngularJS 应用程序有一个 run() block ,它每 2 秒创建一个新的事务对象,模拟这些事务来自外部源(例如,对服务器的 $http 请求)

您将看到,在接收到服务产生的事件后,为模型重新分配新的对象列表时,不会重新加载 View 。

在过去的 48 小时里,我一直在用这个来解决问题。这种行为的最常见原因是在 AngularJS 之外修改模型而不是调用 $apply(),但(我认为)情况并非如此。

还尝试检查 $scope.$$phase 和手动调用 $apply 或 $digest(即使这可能被认为是潜在的错误),但完全没有成功。

我做错了什么吗?这是一个错误吗?我可以应用任何其他策略吗?

最佳答案

setInterval 也是“在 Angular 之外”,我不确定您是否尝试在那里使用 $apply。如果将 transactions.persist(t); 包装在 $rootScope.$apply() 中的 app.js 中,您将看到列表每两秒刷新一次。 “COMMIT”和“ROLL BACK”按钮产生的更改也会立即显示。

Working plnkr

关于javascript - 由于事件导致模型更改后,AngularJS 不刷新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16818249/

相关文章:

javascript - 如何在单击按钮时显示微调器或动画 gif,直到显示消息?

javascript - 调用函数失败

javascript - 在EventEmitter上,我如何知道我可以监听的所有事件?

events - Laravel 监听器监听多个事件

javascript - 如何检查 this 中的值是否是 JavaScript 中的原型(prototype)值?

javascript - 在 Web 组件中获取事件目标

android - 如何建立一个类似于默认短信线程 View 的 View ?

Android 预加载 TabHost View

objective-c - 无法在 View 中设置标签

javascript - 带有悬停的 jQuery 下拉菜单无法正常工作