我可以访问rule
中的数据元素吗?
这是我运行的代码
我试图在Vuetify表单中的文本字段规则上翻转data
元素的值
规则本身运行良好,但我无法访问数据元素,我收到了以下错误:
TypeError: Cannot set property 'disabled' of undefined
这是我的代码:
data: function() {
return {
disabled: false,
rules:{
sellerId(value){
if(value.length == 0){
this.disabled = true;
return "What are you trying to do here?";
}
else{
return true;
}
}
},
我做错了什么?
rules
是一个函数数组,如果您需要函数能够访问data
属性,您可以将它们定义为组件方法:
data: function () {
return {
disabled: false
}
},
methods: {
sellerId (value) {
if (value.length === 0) {
this.disabled = true;
return "What are you trying to do here?";
} else {
return true;
}
}
}
然后在您的Vuetify
组件中:
<v-text-field :rules="[ sellerId ]"></v-text-field>
虽然this
对规则函数不可用,但您可以通过将vue实例分配给变量来实现这一点,这将通过闭包将其带入范围。
vm = new Vue({
el: '#app',
data: () => ({
disabled: true,
rules: [
value => {
if (value.length == 0) {
vm.disabled = true;
return "What are you trying to do here?";
}
else {
return true;
}
}
],
'''
尝试将rules
定义为computed
属性:
data: function() {
return {
disabled: false,
...
}
},
computed: {
sellerIdRules() {
return [
(v) => {
if (value.length == 0) {
this.disabled = true;
return "What are you trying to do here?";
} else {
return true;
} ]
}
}
}