我正在使用AngularJS和ng-repeat
。中繼器中的每個項目都是巨大的項目,其中包含許多ng-bind
,並且列表中包含滾動條。我想編寫一個代碼,當物品不可見時(滾動條外)註銷每個ng-bind
的手錶,並在物品可見時再次註冊手錶。
我有兩個問題:
1.這樣的代碼是否已經存在?
2. ng-bind創建一個手錶。我如何獲得手錶取消註冊($scope.$watch
返回註銷方法,但這發生在ng-bind指令內)?當項目不可見時,在ng-bind中註銷觀察者
謝謝!
我正在使用AngularJS和ng-repeat
。中繼器中的每個項目都是巨大的項目,其中包含許多ng-bind
,並且列表中包含滾動條。我想編寫一個代碼,當物品不可見時(滾動條外)註銷每個ng-bind
的手錶,並在物品可見時再次註冊手錶。
我有兩個問題:
1.這樣的代碼是否已經存在?
2. ng-bind創建一個手錶。我如何獲得手錶取消註冊($scope.$watch
返回註銷方法,但這發生在ng-bind指令內)?當項目不可見時,在ng-bind中註銷觀察者
謝謝!
如果你確實想訪問元素上的ng-bind,你可以創建一個簡單的指令,傳遞給作用域。當你有一個範圍,你可以訪問手錶$$watchers
。我做了一個小提示,表明here。
link: function(scope, elt, attrs) {
console.log(scope.$$watchers);
}
至於你的滾動問題,你有幾個選項。我以前沒有用過,但似乎有一個plugin,對此我不會保證正確性。 inview指令背後的理論是,您將滾動監聽器附加到您的容器。滾動後,您可以計算哪些元素在視圖中。
在此之後,您可以爲那些被查看的人觸發一個inview功能,並觸發其他曾經被查看的人的outview(可以刪除監視者)。
如果您有任何疑問,請告知我。希望這可以幫助!
我正在使用angular-viewport-watch,它具有在可滾動容器中滾動的嵌套表格(具有多行)。
不得不解決一些問題(this和this),但總體來說效果很好。當一個元素不在視口中時,其所有的手錶都會被刪除(遞歸),並且當它重新出現在視口上時,觀察者將被添加回來。
我使用annotate-watchers代碼片段(在Chrome上)可以輕鬆查看有多少個觀察者與每個DOM元素相關。
您的意思是說您有一個視口,並且您只想要監視當前的視口元素? –
@RoyiNamir:是的。 – Naor