0

我有我的数据,我试图在 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 不是函数

4

2 回答 2

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)
    }
 }

尝试这个。在函数中调用函数时,经常会丢失 this 的值,因此我们将 this 存储在一个变量中,以便可以从嵌套函数中访问它。

于 2017-08-17T02:53:48.157 回答
-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)
    }
}
于 2017-08-17T02:50:31.243 回答