簡體   English   中英

如何在VueJS方法中訪問表單變量

[英]How to access form variables in method of VueJS

無法訪問表單變量。 我收集到的信息應該允許我訪問數據,但在控制台中仍然看到未定義的內容。

Vue.use(VeeValidate);

new Vue({
  el: "#app",
  data: {
    form: {
      duration: 7
    }
  },
  methods: {
      doSubmit() {
       this.$validator.validateAll().then(function(result){
        if (!result){
            //this means a validation failed, so exit without doing anything
            console.log('did not work')
            return;
        }
        console.log('did work, duration is:')
        console.log(this.form)
       });
      }
    }
});

嘗試這個:

Vue.use(VeeValidate);

new Vue({
  el: "#app",
  data: {
    form: {
      duration: 7
    }
  },
  methods: {
      doSubmit() {
       var self = this;
       this.$validator.validateAll().then(function(result){
        if (!result){
            //this means a validation failed, so exit without doing anything
            console.log('did not work')
            return;
        }
        console.log('did work, duration is:')
        console.log(self.form)
       });
      }
    }
});

我認為這里的問題是,.then內部的回調函數具有自己的作用域,因此其自身的“ this”與組件中的“ this”不同。 它屬於另一個范圍。 您可以通過執行var self = this;來保留組件的范圍var self = this; 在您的回調之外。

您還可以使用箭頭函數(result) => { your callback logic.. }來代替常規的函數,然后在其中使用“ this”,然后在其中使用“ this”表示組件的“ this”,因為箭頭函數沒有一個單獨的內部范圍。

像這樣使用箭頭功能:

new Vue({
  el: "#app",
  data: {
    form: {
      duration: 7
    }
  },
  methods: {
      doSubmit() {
       this.$validator.validateAll().then((result) => {
        if (!result){
            //this means a validation failed, so exit without doing anything
            console.log('did not work')
            return;
        }
        console.log('did work, duration is:')
        console.log(this.form)
       });
      }
    }
});

您必須在promise處設置一個粗箭頭功能,因為您不再在vue實例上下文中使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM