我可以访问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;
}
}
},
我在做什么错了?
答案 0 :(得分:11)
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>
答案 1 :(得分:1)
虽然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;
}
}
],
'''
答案 2 :(得分:1)
尝试将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;
} ]
}
}
}