根据控件是否禁用,开启或者关闭该控件的必须项检查。
<Form-Item prop="link_address" :show-message="!disableLinkAddress" label="链接地址">
<i-Input :disabled="disableLinkAddress" placeholder="Enter something..." v-model="formModel.link_address" ></i-Input>
</Form-Item>
<Form-Item prop="menu_name" label="菜单名称">
<i-Input type="text" placeholder="Username" v-model="formModel.menu_name">
<Icon type="ios-person-outline" slot="prepend"></Icon>
</i-Input>
</Form-Item>
disableLinkAddress
为true
时,不对链接地址这个控件做检查disableLinkAddress
为false
时,对链接地址这个控件做检查
formRules: {
menu_name: [{required: true, trigger: 'blur'}],
link_address: [{required: true, message: '链接地址不能为空', trigger: 'blur'}]}
watch: {
'formModel.parent_menu_seq': function (newValue, oldValue) {
var self = this;
if (newValue == 0) {
self.disableLinkAddress = true;
self.formRules['link_address'].pop()
} else {
self.disableLinkAddress = false;
self.$nextTick(function () {
self.formRules['link_address'].push({required: true, message: '链接地址不能为空', trigger: 'blur'})
})
}
}
},
我目前的做法是
watch: {
disableLinkAddress: function (newValue, oldValue) {
var self = this;
if (newValue) {
self.formRules['link_address'] = [{required: false, trigger: 'blur'}]
} else {
self.formRules['link_address'] = [{required: true, message: '链接地址不能为空', trigger: 'blur'}]
}
}
},
但是这样做有个问题,trigger: 'blur'
失效了,焦点离开控件后,validate不能自动触发了。
请教解决思路和方法。
我的做法是自定义validator,如果检测到你这里的是‘disableLinkAddress’为true,就直接callback();否则才进行校验;