我有我的数据,我试图在setTimeout内的初始化程序中访问它。
data() {
return { val: {} }
},
methods: {
test() {
console.log(this.val) // works
var self = this
setTimeout(function() {
console.log(this.val) // works
var check = this.myMethod()
$.validate({
onError: function($form) {
console.log(self.val) // doesn't work
}
})
}, 500)
},
myMethod() {
// some stuff
return true
}
}
这是更新后的代码。使用var self = this
方法,我现在得到了:
未捕获的TypeError:this.myMethod不是函数
答案 0 :(得分:1)
data() {
return { val: {} }
},
methods: {
test() {
console.log(this.val) // works
var self = this;
setTimeout(function() {
console.log(self.val) // works
$.validate({
onError: function($form) {
console.log(self.val) // doesn't work
}
})
}, 500)
}
}
试试这个。在函数中调用函数时,你经常会失去这个值,所以我们将它存储在一个变量中,以便从嵌套函数中访问它。
答案 1 :(得分:-2)
methods: {
test() {
console.log(this.val) // works
// for this -> self trick
let self = this;
setTimeout(function() {
console.log(self.val) // works
$.validate({
onError: function($form) {
console.log(self.val) // doesn't work
}
})
}, 500)
}
}