从指令中删除事件侦听器 - 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');
});
我在从鼠标滚轮和滚轮中删除事件侦听器时遇到问题。我正在使用 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');
});