【问题标题】:remove event listener in vue删除 vue 中的事件监听器
【发布时间】:2018-05-15 21:16:47
【问题描述】:

我需要删除事件监听器。我正在从事件侦听器中执行的函数调用某些方法,所以我需要使用 es6 语法。我不能使用命名函数。如何删除事件监听器

methods :
    initCanvas : function(x, y, width, height) {
        //do something
    },
    some_method : function() {
        let svgObjectEl = // some logic will give the object elemenet embedding the svg
        svgObjectEl.addEventListener('load', () => {
            //let x,y,width, height has some value
            // some code here
            this.initCanvas(x, y, width, height);         
        });   
        svgObjectEl.removeEventListener('load', ??);
}

【问题讨论】:

  • 你需要将它存储在一个变量中。
  • 你能写出来吗?
  • 不会<svg @load.once="listener" ... 这样做吗?
  • @birdspider No. 我必须执行一些逻辑

标签: javascript ecmascript-6 vue.js addeventlistener


【解决方案1】:

可能是这样的吗?

methods: {
  initCanvas (x, y, width, height) {
    //do something
  },
  some_method() {
    svgObjectEl.options = { x: 12, y: 13, … }
    svgObjectEl.addEventListener('load', this.listener)
  },
  listener(evt) {
    // some code here
    this.initCanvas(evt.target.options)
    svgObjectEl.removeEventListener('load', this.listener)    
  }
}

【讨论】:

  • 方法“some_method”中有一些变量 x、y、width、height。我如何将它们传递给方法侦听器
  • svgObjectEl 在侦听器中找不到。所以我稍微调整一下我的代码。
  • 我希望看到 this.$on() 和相当于删除的东西
猜你喜欢
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多