Vue中如何移除事件监听器

6

我需要删除事件监听器。在事件监听器内执行的函数中,我调用了一些方法,因此需要使用 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', ??);
}

2
你需要将它存储在一个变量中。 - SLaks
你能把它写出来吗? - Tomonso Ejang
1
这样写不就可以了吗:<svg @load.once="listener" ... ? - birdspider
@birdspider 不是,我必须执行一些逻辑。 - Tomonso Ejang
1个回答

2
也许像这样的东西吗?
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。我该如何将它们传递给方法监听器? - Tomonso Ejang
svgObjectEl 在监听器中未找到。因此,我稍微调整了我的代码。 - Tomonso Ejang
8
我希望看到 this.$on() 的用法和对应的删除方法。 - geoidesic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接