javascript - 当项目不可见时在 ng-bind 中注销观察者

标签 javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我正在使用带有 ng-repeat 的 AngularJS。转发器中的每个项目都是巨大的项目,包含许多 ng-bind 和用滚动条包裹的列表。我想编写一个代码,当项目不可见时(在滚动之外)取消注册每个 ng-bind 的 watch ,并在项目可见时再次注册 watch 。
我有两个问题:
1. 这样的代码是否已经存在于某处?
2. ng-bind 创建 watch 。我怎样才能获得对 watch 注销的访问权限($scope.$watch 返回注销方法,但这发生在 ng-bind 指令中)?

谢谢!

最佳答案

我正在使用 angular-viewport-watch ,带有在可滚动容器中滚动的嵌套表(有很多行)。

必须解决一些问题(thisthis),但总体来说效果很好。当一个元素离开视口(viewport)时,它的所有观察者都会被移除(递归),当它重新出现在视口(viewport)中时,观察者会被添加回来。

我正在使用 annotate-watchers片段(在 chrome 上)可以轻松查看有多少观察者与每个 DOM 元素相关。

关于javascript - 当项目不可见时在 ng-bind 中注销观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21661015/

相关文章:

javascript - 如何在不缩小的情况下构建 Yeoman Angular-FullStack

angularjs - 在指令中对 Angular Controller 功能进行单元测试

ios - 用于替换 html 的 Angular 指令在 iOS 上不起作用

javascript - 如何使用CSS和js为div内的每个图像制作一个关闭按钮

javascript - 为什么 JavaScript 使用术语 "Number"而不是 "Integer"?

Javascript 表单 AJAX 样式

javascript - 获取屏幕大小以选择匹配的标题图片

javascript - 第一个日期是第二个日期的 minDate

javascript - Angularjs推送具有不同值的项目

javascript - 如何确保指令的链接函数在 Controller 之前运行?