javascript - Vue JS removeEventListener 不起作用。为什么?

标签 javascript vue.js addeventlistener removeeventlistener

const options = {
  offset: -50
};

export default {
  name: 'BarMenu',
  data() {
    return {
      scrollingDirection: '',
    }
  },
  computed: {
    cssClasses() {
      return {
        hidden: this.scrollingDirection === 'down'
      }
    }
  },
  mounted() {
    this.onScroll();
  },
  methods: {
    scrollToIngredients() {
      return this.$scrollTo(document.getElementById('ingredients-inside-content'), 600, options);
    },
    scrollToRecipes() {
      return this.$scrollTo(document.getElementById('similar-recipes'), 600, options);
    },
    scrollToComments() {
      return this.$scrollTo(document.getElementById('comments'), 600, options);
    },
    onScroll() {
      let lastScrollTop = 0;

      const handler = () => {
        let st = window.pageYOffset || document.documentElement.scrollTop;
        if (st > lastScrollTop) {
          this.scrollingDirection = 'down';
        } else {
          this.scrollingDirection = 'up';
        }
        lastScrollTop = st <= 0 ? 0 : st;
      };

      window.removeEventListener("scroll", handler, false);
      window.addEventListener("scroll", handler, false);
    }
  },
}

这条线不起作用,为什么? window.removeEventListener("scroll", handler, false); 我尝试了所有方法:箭头函数、函数声明等。但是该事件监听器根本没有删除。

最佳答案

我也遇到了类似的问题,最后我用另一种替代方法解决了它,在addEventListener函数的参数中添加once选项,该选项会自动删除它并这对我来说是有效的,如果是的话可以帮助你检查parameters

关于javascript - Vue JS removeEventListener 不起作用。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58993476/

相关文章:

javascript - 传递 Node 模块的上下文

javascript - 编辑按钮不显示

javascript - 如何使用 jquery 放置 json 值?

javascript - vue 声明中的引用对象

javascript - 使用 vuejs 2 加载外部 html

javascript - Vue Chart.js 加载时不显示数据

javascript - 如何在类里面编写 Mocha 测试

javascript - 事件监听器或 onClick - 最佳实践

javascript - 使用 AJAX 获取 html 内容后,将监听器添加到新元素的正确方法是什么? (jQuery,Javascript)

javascript - addEventListener 在 init (IE) 上不起作用?