vue.js methods中的A方法怎么调用method中的B方法
在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();
4 回答4.6k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答5k 阅读
2 回答2.6k 阅读✓ 已解决
1 回答3.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
他们都作为属性加到
this
中去了,所以要注意data中的命名不能和methods中冲突