element-ui 级联选择器(Cascader)使用懒加载的回显

element-ui 级联选择器(Cascader)使用懒加载的回显

  • 当我在回来看这篇文档的时候,我觉得我已经把懒加载写好了,基础的懒加载使用方法就不做记录了,如果不会移步这里
  • 我目前的使用场景:
  1. 根据部门选择了销售人员,四级联动
  2. 给销售人员分配业务区域,for循环,动态添加, 四级联动
  • 在回显的时候,因为懒加载数据并没有结束,所以会导致我们的虽然赋值成功,但是不会展示,此时我们值需要在一级列表内,对应的值的对象中添加一个children对象并赋值为空数组即可 直接上代码
  • html部分
	<el-form ref="businessForm" :model="businessForm" label-width="80px">
       <el-form-item v-if="userId === 0" label="销售成员" prop="name" :rules="{required: true, message: '请选择销售成员', trigger: 'blur'}">
         <el-cascader v-model="businessForm.name" :props="userProps" />
       </el-form-item>
       <el-form-item v-else label="销售成员" >
         <el-input :value="userName" class="name-int" disabled />
       </el-form-item>
       <el-form-item
         v-for="(item, index) in businessForm.areaList"
         :key="item.id"
         :label="index === 0 ? '业务区域' : ''"
         :prop="'areaList.' + index + '.value'"
         :rules="{required: false, validator: validArea, trigger: 'blur'}"
       >
         <div>
           <el-cascader
             v-model="item.value"
             class="mr-10"
             :props="areaPropsFun(item, index)"
           />
           <el-button type="primary" plain @click="businessForm.areaList.splice(index + 1, 0, {value: '', id: Math.random().toString(16).slice(2)}) ">+</el-button>
           <el-button v-if="businessForm.areaList.length > 1" type="danger" plain @click="businessForm.areaList.splice(index, 1)">-</el-button>
         </div>
       </el-form-item>
     </el-form>
  • js部分
  data() {
    const that = this
    const validArea = (rule, value, callback) => {
	    // 校验方法
    }
    return {
      businessForm: {
        name: '',
        areaList: []
      },
      userProps: {
        lazy: true,
        async lazyLoad (node, resolve) {
          const { level } = node;
          let data = []
          // 获取数据 data = xxx
          resolve(data)
        }
      },
      areaPropsFun(item) {
        // item为业务区域对应的值
        let lazyLoad = async (node, resolve) => {
          const { level } = node;
          let data = []
          // 获取数据 data = xxx
          // 
          if (level === 0) {
          	data = [
				{
					label: "一级数据1",
					value: "1"
				},
				{
					label: "一级数据2",
					value: "2"
				},
				{
					label: "一级数据3",
					value: "3"
				}
			]
			// 这里只是举例,具体的看业务
			// 如果选中的一级数据是2那直接给data[1]添加children就可以了 后面组件会自动补全
			if (item.value[0] === '2') {
				data[1].children = []
			}
          }
          resolve(data)
        }
        return {
          lazy: true,
          lazyLoad
        }
      },
      validArea
    }
  }

ps: 此文章做个人平常记录,若是有幸帮到朋友,但求一赞

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于 Element UI 的级选择 el-cascader,如果需要回显已经选中的值,可以通过设置 v-model 和 :options 属性来实现。 假设有一个三级动的级选择,选项数据如下: ``` options: [{ value: 'zhinan', label: '指南', children: [{ value: 'shejiyuanze', label: '设计原则', children: [{ value: 'yizhi', label: '一致' }, { value: 'fankui', label: '反馈' }] }, { value: 'daohang', label: '导航', children: [{ value: 'cexiangdaohang', label: '侧向导航' }, { value: 'dingbudaohang', label: '顶部导航' }] }] }] ``` 如果需要回显已经选中的值,可以将当前选中的值通过 v-model 绑定到 data 中的一个变量上,例如: ``` <el-cascader v-model="selectedOptions" :options="options" ></el-cascader> ``` 其中,selectedOptions 是一个数组,用于保存当前选中的值。 接下来,需要在 mounted 钩子函数中设置已选中的值,例如: ``` mounted() { this.selectedOptions = ['zhinan', 'shejiyuanze', 'yizhi'] } ``` 这样,在页面完成后,级选择就会自动回显已经选中的值。 需要注意的是,如果级选择的选项数据是异步的,需要在完成后再设置已选中的值,例如: ``` mounted() { this.loadOptions().then(() => { this.selectedOptions = ['zhinan', 'shejiyuanze', 'yizhi'] }) }, methods: { loadOptions() { // 异步选项数据 } } ``` 这样就可以实现 Element UI 的级选择 el-cascader回显功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淡莣一苆~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值