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

时间:2015-02-03 10:13:40

标签: javascript jquery angularjs fullpage.js

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

问题是,当我通过点击链接(我使用ui路由器为angular.js)从我的“关于页面”到另一个,然后点击后退按钮重新开始关于页面,事件监听器开启鼠标滚轮和滚轮未被移除并附加了额外的侦听器。重复这些步骤可以添加更多的侦听器。

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

1 个答案:

答案 0 :(得分:3)

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

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