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
});