我已经准备好了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”按钮产生的更改也会立即显示。
关于javascript - 由于事件导致模型更改后,AngularJS 不刷新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16818249/