vue.js methods中方法调用

vue.js methods中的A方法怎么调用method中的B方法

阅读 48.1k
3 个回答

他们都作为属性加到this中去了,所以要注意data中的命名不能和methods中冲突

methods: {
    A: function() {
        this.B();
    },
    B: function() {
    }
}

在chrome61上研究了下,使用this.fun()以及this.$options.methods.fun()都报错。用当前实例替换掉this即可。vue版本是"2.4.4"
示例以下:

        var vm = new Vue({
            el:'app',
            methods:{
                afun:()=>{
                    vm.$options.methods.bfun();
                    //vm.bfun();也可
                    //此处vm不要用this
                },
                bfun:()=>{
                    console.log('被afun调用');
                }
            }
        })

why?
通过log(this)看出this是window全局对象。
vue将Vue全局对象,vm实例对象等一些属性加到了window对象当中。
而methods在vm实例中,见下图
图片描述

data也被加到了window对象中

var v = new Vue({
  methods: {
    a: function() {
      console.log('func a run !');
      this.b();
    },
    b: function() {
      console.log('func b run !');
    }
  }
});

v.a();
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题