在vue的data里面 new对象 绑定这个对象的方法 this 指向为null

菊梦秋雨
  • 4
新手上路,请多包涵

在vue的data里面 new对象 绑定这个对象的方法 this 指向为null
我在vue 外写了一个类写了一些自定义方法,
我不想在methods新加多余的函数 如何解决。。

<div id="app">
    <div class="a" @click="mouse.click"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    class mouse {
        constructor() {
            this.a = 0
        }
        click(e) {
            console.log(this) 
            //这里打印出来是null
        }
        
    }
    var app = new Vue({
        el: '#app',
        data() {
            return {
                mouse: new mouse()
            }
        }
    })
</script>
回复
阅读 1.8k
3 个回答
✓ 已被采纳
constructor(context) {
    this.click = this.click.bind(context);
}

return {
    mouse: new Mouse(this)
}

@click="() => mouse.click.call(this)"

// 你的想法我可以理解为, 你想把放方法都定义在data上, 通过一个变量'.'的形式全拿到

class mouse {
           static click() { // 定义为静态也就不用new了
                // app 就是this
                let _this = app;
                console.log(_this)
            }
        }

        var app = new Vue({
            el: '#app',
            data:{ 
               mouse: mouse
            }
        })
  constructor() {
    this.a = 0;
    this.click=this.click.bind(this)
  }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏