我正在使用带有 ng-repeat
的 AngularJS。转发器中的每个项目都是巨大的项目,包含许多 ng-bind
和用滚动条包裹的列表。我想编写一个代码,当项目不可见时(在滚动之外)取消注册每个 ng-bind
的 watch ,并在项目可见时再次注册 watch 。
我有两个问题:
1. 这样的代码是否已经存在于某处?
2. ng-bind 创建 watch 。我怎样才能获得对 watch 注销的访问权限($scope.$watch
返回注销方法,但这发生在 ng-bind 指令中)?
谢谢!
最佳答案
我正在使用 angular-viewport-watch ,带有在可滚动容器中滚动的嵌套表(有很多行)。
必须解决一些问题(this 和 this),但总体来说效果很好。当一个元素离开视口(viewport)时,它的所有观察者都会被移除(递归),当它重新出现在视口(viewport)中时,观察者会被添加回来。
我正在使用 annotate-watchers片段(在 chrome 上)可以轻松查看有多少观察者与每个 DOM 元素相关。
关于javascript - 当项目不可见时在 ng-bind 中注销观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21661015/