Javascript 重复使用指令时正在创建多个绑定
我正试图让无穷大加载指令工作。所以我为窗口滚动事件创建了一个绑定,如下所示Javascript 重复使用指令时正在创建多个绑定,javascript,angularjs,events,infinite-scroll,Javascript,Angularjs,Events,Infinite Scroll,我正试图让无穷大加载指令工作。所以我为窗口滚动事件创建了一个绑定,如下所示 angular.element($window).bind('scroll',function() { _onScroll($scope); }); var $wnd = angular.element($window); var pageTop = $wnd.scrollTop() + $wnd.height(); var markerTop = $lo
angular.element($window).bind('scroll',function()
{
_onScroll($scope);
});
var $wnd = angular.element($window);
var pageTop = $wnd.scrollTop() + $wnd.height();
var markerTop = $loadMore.offset().top;
console.log('pageTop: '+pageTop+' markerTop: '+markerTop);
pageTop: 300 markerTop: 1000
pageTop: 300 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 900 markerTop: 1000
pageTop: 900 markerTop: 1000
在我的\u onScroll
方法中,我将滚动位置记录到控制台,如下所示
angular.element($window).bind('scroll',function()
{
_onScroll($scope);
});
var $wnd = angular.element($window);
var pageTop = $wnd.scrollTop() + $wnd.height();
var markerTop = $loadMore.offset().top;
console.log('pageTop: '+pageTop+' markerTop: '+markerTop);
pageTop: 300 markerTop: 1000
pageTop: 300 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 900 markerTop: 1000
pageTop: 900 markerTop: 1000
除非我导航到应用程序的另一部分,然后返回带有infinity指令的页面,否则这是有效的
问题是,\u onScroll
被称为重复时间。每次导航回infinity指令时,都会添加一个对\u onScroll
比如,
第一次我将在控制台中看到
pageTop: 300 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 900 markerTop: 1000
第二次,我将看到每个滚动事件打印两行,如下所示
angular.element($window).bind('scroll',function()
{
_onScroll($scope);
});
var $wnd = angular.element($window);
var pageTop = $wnd.scrollTop() + $wnd.height();
var markerTop = $loadMore.offset().top;
console.log('pageTop: '+pageTop+' markerTop: '+markerTop);
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(…)
是持久的,当指令不再使用时,我需要以某种方式解除绑定
我该怎么做?需要注意的是,此指令没有独立的作用域,因此我无法监视要销毁的作用域。您可以绑定到指令中的jQuery destroy事件:
element.on('$destroy', function() {
// unbind
});