gpt4 book ai didi

javascript - 如何在 VueJS 的方法中访问表单变量

转载 作者:行者123 更新时间:2023-11-30 14:04:07 25 4
gpt4 key购买 nike

访问表单变量时遇到问题。我收集到应该允许我访问数据,但我一直在控制台中看到未定义。

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; 来保留组件的范围。

您还可以在“then callback”中使用箭头函数 (result) => { your callback logic.. } 而不是常规函数,然后在内部的“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)
});
}
}
});

关于javascript - 如何在 VueJS 的方法中访问表单变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55780631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com