无法读取未定义的 属性“__isVuelidateAsyncVm”
Cannot read property '__isVuelidateAsyncVm' of undefined
这是我的代码 codesandbox,我这里有一个带有验证的表单和“计算”按钮,该按钮在所有字段都有效之前处于禁用状态。但出于某种原因,我收到错误 Cannot read property '__isVuelidateAsyncVm' of undefined
.
首先是一些评论,很高兴您提供了一个沙箱,但是您的问题本身应该包含相关代码以重现该问题。如果(当)link 死亡时,这个问题就变得毫无用处。
进行一些调试以真正找到导致此错误的字段。通过一个接一个地删除字段,我注意到导致您出现问题的是性别字段。所以仔细观察 inArray
,你的自定义验证器,我注意到你没有返回任何东西,这导致验证失败。将 return
添加到您的 inArray
:
const inArray = (value, vm) => {
// add return!
return vm.items.some(gender => value.indexOf(gender) !== -1);
};
PS,作为提示,尝试进行一些调试以缩小问题范围,您可能已经自己解决了这个问题:)
您问题的其余相关代码:
<v-select
v-model="user.gender.value"
:items="user.gender.items"
label="Gender"
:solo="true"
:error-messages="userGenderErrors"
append-icon
></v-select>
脚本:
validations: {
user: {
gender: {
value: {
required,
inArray
}
},
}
},
我遇到了同样的问题,所以感谢 Bogdan 的问题和 AT82 的回答,它真的帮助了我:)
我想补充一下我的情况,我有这个代码:
validations() {
return {
VaccineUpload: {
vaccines: {
$each: {
isValidInput: (vaccine) => {
const { brand, date } = vaccine
return (!brand && !date) || (brand && date)
}
}
}
},
而 return 语句 return (!brand && !date) || (brand && date)
将 return null
而不是布尔值,这会产生相同的错误。我的解决方案是将代码更改为:
return !!((!brand && !date) || (brand && date))
因此请始终确保您return使用布尔值来成功使用验证。
这是我的代码 codesandbox,我这里有一个带有验证的表单和“计算”按钮,该按钮在所有字段都有效之前处于禁用状态。但出于某种原因,我收到错误 Cannot read property '__isVuelidateAsyncVm' of undefined
.
首先是一些评论,很高兴您提供了一个沙箱,但是您的问题本身应该包含相关代码以重现该问题。如果(当)link 死亡时,这个问题就变得毫无用处。
进行一些调试以真正找到导致此错误的字段。通过一个接一个地删除字段,我注意到导致您出现问题的是性别字段。所以仔细观察 inArray
,你的自定义验证器,我注意到你没有返回任何东西,这导致验证失败。将 return
添加到您的 inArray
:
const inArray = (value, vm) => {
// add return!
return vm.items.some(gender => value.indexOf(gender) !== -1);
};
PS,作为提示,尝试进行一些调试以缩小问题范围,您可能已经自己解决了这个问题:)
您问题的其余相关代码:
<v-select
v-model="user.gender.value"
:items="user.gender.items"
label="Gender"
:solo="true"
:error-messages="userGenderErrors"
append-icon
></v-select>
脚本:
validations: {
user: {
gender: {
value: {
required,
inArray
}
},
}
},
我遇到了同样的问题,所以感谢 Bogdan 的问题和 AT82 的回答,它真的帮助了我:)
我想补充一下我的情况,我有这个代码:
validations() {
return {
VaccineUpload: {
vaccines: {
$each: {
isValidInput: (vaccine) => {
const { brand, date } = vaccine
return (!brand && !date) || (brand && date)
}
}
}
},
而 return 语句 return (!brand && !date) || (brand && date)
将 return null
而不是布尔值,这会产生相同的错误。我的解决方案是将代码更改为:
return !!((!brand && !date) || (brand && date))
因此请始终确保您return使用布尔值来成功使用验证。