在vue中删除事件侦听器

时间:2017-12-01 17:55:41

标签: javascript ecmascript-6 vue.js addeventlistener

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

1 个答案:

答案 0 :(得分: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)    
  }
}