首先html结构
<el-form
ref="roleForm"
:model="roleForm"
label-width="auto"
class="demo-roleForm"
:rules="rules"
>
<el-form-item
label="角色名称"
prop="name"
>
<el-input v-model="roleForm.name" />
</el-form-item>
<el-form-item
label="描述"
prop="desc"
>
<el-input
type="textarea"
rows="3"
v-model="roleForm.desc"
/>
</el-form-item>
<el-form-item
label="菜单权限"
prop="roleMenus"
>
<el-tree
ref="tree"
v-model="roleForm.roleMenus"
:data="menuList"
show-checkbox
node-key="id"
@check-change="check_change"
:props="defaultProps"
:default-checked-keys="checkedKeys"
/>
</el-form-item>
</el-form>
介绍一下字段的作用
form标签中:
:model="roleForm" 用来绑定表单中整体的数据,下方所有展 示内容的集合
:rules="rules" 用来配置表单校验的规则
el-form-item标签中:
label="标题名称" 用来设置该区域内表单的标题文字
prop="name" 用来设置表单校验,注意:::name与data中rules设置的键名一致,并且该名为该表单双向数据绑定的值
el-input标签中:
v-model="roleForm.name" 用来绑定当前输入框中的值,对应在整体表单数据中,如果要校验的话,需要在rules中设置的名称与当前绑定字段名一致
el-tree标签中:
ref="tree" 设置名称,方便后面使用tree方法
v-model="roleForm.roleMenus" 绑定tree结构选中的值,该值要与对应的form-item中的prop的值一样
:data="menuList" 用来绑定tree中渲染的值
show-checkbox 用来确定节点是否可以选择
node-key="id" 用来表示节点的属性,应该是唯一的
@check-change="check_change" 节点选中状态发生变化时的回调
:props="defaultProps" 用来设置子节点如何展示
:default-checked-keys="checkedKeys" 默认勾选的数组
js代码:
data() {
var validatePass = (rule, value, callback) => {
console.log(rule, value);
if (value.length == 0 || !value) {
callback(new Error("请选择菜单权限"));
} else {
callback();
}
};
return {
//表单所有内容集合
roleForm: {
name: "",
roleMenus: [],
},
menuList: "",
rules: {
name: [{ required: true, message: "请输入角色名称", trigger: "blur" }],
roleMenus: [{ validator: validatePass, trigger: "blur" }]
},
};
},
js字段介绍
首先return中的字段介绍:
roleForm 该字段是上方form表单中绑定的所有内容
menuList: [ ], 是tree选择push进去的内容
rules 该字段是定义检验内容的
rules.name 是绑定的检验名称,该名称与html中form-item中prop的内容一致
name中配置的是规则:
1.required 为true,是一般用来校验输入框的内容的,正常情况下直接写[{ required: true, message: "请输入角色名称", trigger: "blur" }]可以直接判断非空
2.message是条件不满足是弹出的内容
3.当是特殊对象例如tree中的数组的时候,就需要自定义判断了,
4.自定义判断使用validator: functionName字段,functionName这个是设置的方法名称
其次return上方的方法:
该方法就是通过rules中对应验证下使用validator设置的定义方法
其中有三个返回值:
1.value 是在点击提交之后提取的内容,可以根据这个字段进行判断空还是其他