Vuejs中methods中的互相调用

vuejs中methods中的方法可以互相调用吗

如一下的代码,想要在 test3 中调用 test2 的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
new Vue({
el: '#app',
data: {
test: 'test',
},
methods: {
test1: function() {
alert(this.test)
},
test2: function() {
alert("this is test2")
alert(this.test)
},
test3: function() {
this.test2();
//
}
}
})

methods中的function中的this指向vue实例,没有任何的this绑定,所以肯定访问不到。

可以尝试

1
this.$options.methods.test2.bind(this)();

这是vue的调用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* Setup instance methods. Methods must be bound to the
* instance since they might be passed down as a prop to
* child components.
*/
Vue.prototype._initMethods = function() {
var methods = this.$options.methods
if (methods) {
for (var key in methods) {
this[key] = bind(methods[key], this)
}
}
}

function bind(fn, ctx) {
return function(a) {
var l = arguments.length
return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx)
}
}

WHY·LIAM wechat
记录生活,研究产品,分享设计,分析数据,讨论科技和商业,不定期扯淡。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!