我正试图让无限加载指令起作用。所以我为这样的窗口滚动事件创建了一个绑定。
angular.element($window).bind('scroll',function()
{
_onScroll($scope);
});
在我的_onScroll
方法中,我像这样登录控制台滚动位置。
var $wnd = angular.element($window);
var pageTop = $wnd.scrollTop() + $wnd.height();
var markerTop = $loadMore.offset().top;
console.log('pageTop: '+pageTop+' markerTop: '+markerTop);
除非我导航到应用程序的其他部分,然后返回带有infinity指令的页面,否则此方法无效。
问题是_onScroll
被称为重复次数。每次我导航回无限指令时,都会添加对_onScroll
例如;
我第一次在控制台看到。
pageTop: 300 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 900 markerTop: 1000
第二次,我会看到为每个滚动事件打印两行。
pageTop: 300 markerTop: 1000
pageTop: 300 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 900 markerTop: 1000
pageTop: 900 markerTop: 1000
等等......
似乎angular.element($window).bind(..)
是持久性的,当不再使用该指令时,我需要以某种方式取消绑定它。
我该怎么做?应该注意的是,该指令没有孤立的范围,因此我无法监视要销毁的范围。
答案 0 :(得分:1)
您可以绑定到指令中的jQuery destroy事件:
element.on('$destroy', function() {
// unbind
});