900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > elementui 级联选择器的用法

elementui 级联选择器的用法

时间:2020-10-16 11:29:01

相关推荐

elementui 级联选择器的用法

1.级联选择器的html结构:

<!-- 添加分类的对话框 --><el-dialog title="添加分类" :visible.sync="addCateDialogVisible" width="50%" @close="addCateDialogClosed"><!-- 添加分类的表单 --><el-form :model="addCateForm" :rules="addCateFormRules" ref="addCateFormRef" label-width="100px"><el-form-item label="分类名称:" prop="cat_name"><el-input v-model="addCateForm.cat_name"></el-input></el-form-item><!-- 只填分类名称,不填父级分类,就表示添加的是一级分类,填了分类名称,父级分类填第一个列表的内容,就表示添加的是二级分类,填了分类名称,父级分类填第二个列表里的内容,就表示添加的是三级分类 --><el-form-item label="父级分类:"><!--expand-trigger="hover"鼠标经过,展示子菜单 options 用来指定数据源 props 用来指定配置对象 expand-trigger="hover" change-on-select可以选中一级分类 clearable❌号清空表单 --><el-cascader expand-trigger="hover" :options="parentCateList" :props="cascaderProps" v-model="selectedKeys" @change="parentCateChanged" clearable change-on-select> </el-cascader></el-form-item></el-form><span slot="footer" class="dialog-footer"><el-button @click="addCateDialogVisible = false">取 消</el-button><el-button type="primary" @click="addCate">确 定</el-button></span></el-dialog>

2.data里面需要定义的参数:

​​​​ // 控制添加分类对话框的显示与隐藏addCateDialogVisible: false,// 添加分类表单的验证规则对象addCateFormRules: {cat_name: [{ required: true, message: '请输入分类名称', trigger: 'blur' }],},// 表单的双向绑定addCateForm: {// 将要添加的分类的名称cat_name: '',// 父级分类的Idcat_pid: 0,// 分类的等级,默认要添加的是1级分类cat_level: 0,},// 级联选择器数据源parentCateList: [],// 指定级联选择器的配置对象(下面这些参数是级联选择器必备的参数)cascaderProps: {value: 'cat_id',label: 'cat_name',children: 'children',},// 级联选择器选中的父级分类的Id数组(一级分类id和二级分类id)selectedKeys: [],

3.methods里面需要写的函数:

获取parentCateList里面的数据

// 点击按钮,展示添加分类的对话框showAddCateDialog() {// 先获取父级分类的数据列表this.getParentCateList()// 再展示出对话框this.addCateDialogVisible = true},

​​​​// 获取父级分类的数据列表async getParentCateList() {const { data: res } = await this.$http.get('categories', {params: { type: 2 },})if (res.meta.status !== 200) {return this.$message.error('获取父级分类数据失败!')}console.log(res.data)this.parentCateList = res.data},

选择器选择时触发的函数:

​​​​​​ // 级联选择器选择项发生变化触发这个函数,就会输出当前选择的一级分类id和二级分类idparentCateChanged() {console.log(this.selectedKeys)// 如果 selectedKeys 数组中的 length 大于0,证明选中的父级分类if (this.selectedKeys.length > 0) {// 父级分类的Id// 如果selectedKeys[1],就是this.selectedKeys[this.selectedKeys.length - 1]=this.selectedKeys[0]=1// selectedKeys[1,3],就是this.selectedKeys[this.selectedKeys.length - 1]=this.selectedKeys[1]=3// cat_pid就是最后面的那个idthis.addCateForm.cat_pid = this.selectedKeys[this.selectedKeys.length - 1]// 为当前分类的等级赋值this.addCateForm.cat_level = this.selectedKeys.length} else {// 反之,就说明没有选中任何父级分类// 父级分类的Idthis.addCateForm.cat_pid = 0// 为当前分类的等级赋值this.addCateForm.cat_level = 0}

@close="addCateDialogClosed"关闭级联选择器后触发的回调函数重置表单:

​​// 监听对话框的关闭事件,重置表单数据addCateDialogClosed() {// 重置表单this.$refs.addCateFormRef.resetFields()// 清空所有数据this.selectedKeys = []this.addCateForm.cat_level = 0this.addCateForm.cat_pid = 0},

5.调接口上传数据,就是将this.addCateForm做为参数上传就可以了

// 点击确定,添加新的分类addCate() {// 表单预验证this.$refs.addCateFormRef.validate(async (valid) => {//表单为空,就return出去if (!valid) return//表单不为空,就调接口上传参数const { data: res } = await this.$http.post('categories', this.addCateForm)if (res.meta.status !== 201) {return this.$message.error('添加分类失败!')}this.$message.success('添加分类成功!')//刷新列表this.getCateList()//关闭对话框this.addCateDialogVisible = false})},

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。