从指令中删除事件侦听器 - Angular.js

Remove event listeners from directive - Angular.js

我在从鼠标滚轮和滚轮中删除事件侦听器时遇到问题。我正在使用 fullpage.js 插件。

问题是,当我通过单击 link 从我的 "about page" 转到另一个时(我正在为 angular.js 使用 ui 路由器),然后单击后退按钮返回关于页面,鼠标滚轮和滚轮上的事件侦听器不会被删除,并且会附加一个额外的侦听器。重复这些步骤添加更多侦听器。

.directive('dfAboutPagesView', function(  ) {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
                scope.checkPackages = {
                    all: false
                };

            scope.$on("$destroy", function() {
                $(document).off();
            });

            var fullpage_in = function () {

                element.fullpage({
                    scrollingSpeed: 500,
                    autoScrolling: false
                });
                element.fullpage({
                    onLeave: function (index, nextIndex, direction) {
                        if (index == 1 && direction == 'down') {
                            $('#header').slideUp(500, 'easeInQuad');
                        }
                        else if (index == 2 && direction == 'up') {
                            $('#header').slideDown(500, 'easeInQuad');
                        }
                        else if (index == 3 && direction == 'down') {
                            $('#footer').slideDown(500, 'easeInQuad');
                        }
                        else if (index == 4 && direction == 'up') {
                            $('#footer').slideUp(500, 'easeInQuad');
                        }
                        }
                    });
                };
    fullpage_in();
            }
    }
})

查看 fullPage.js 的文档,我认为您想在 $destroy 处理程序中调用插件的 destroy 方法:

scope.$on("$destroy", function() {
     $.fn.fullpage.destroy('all');
});