Cascader 级联选择组件

乌鱼子

一开始级联组件使用的是ElementUI,但是有一个bug。我自己做的是一个二级级联,在选择了二级之后,点击x删除选择,再打开下拉框,一级和二级都是展开的,翻遍了文档都没有查到解决资料,然后问了我们一个前端同事,他说这是ElementUI组件的问题,建议我使用iview组件,然后我就用了iView的级联组件。

iView的级联组件使用和ElementUI没啥区别,但是我们服务器返回的数据和组件提供的数据键名不一致,这里把ElementUI和iView组件对键名的修改都整理一下。

1-1、ElementUI级联组件对键名的修改:(直接在:props里配置)
<el-cascader 
    v-model="form.woTypeCode" 
    :props="{ value: 'code', label: 'name', children: 'childs' }"  
    //将键名code修改为value name修改为label childs修改为children        
    :options="WorkOrderTreeArr" 
    clearable 
    @focus="getWorkOrderTree">
</el-cascader>
1-2、iView级联组件对键名的修改:(我是在vuex的mutations这里就将服务器返回的数据键名就修改了,后面再mapState拿数据渲染就和之前的流程完全一样了)
const mutations = {
  GETWORKORDERTREE(state, WorkOrderTree) {
    // 参数WorkOrderTree是服务器返回的data数据
    // 1、先将WorkOrderTree数组中的code修改为value 存储到变量WorkOrderLevelTreevalue(到现在这个变量数组里其实只有了value)
    let WorkOrderLevelTreevalue = JSON.parse(JSON.stringify(WorkOrderTree).replace(/code/g, "value"))
    // 2、再将WorkOrderLevelTreevalue数组中的name修改为label 存储到变量WorkOrderLevelTreeLable(到现在这个变量数组里其实就有了value、label)
    let WorkOrderLevelTreeLable = JSON.parse(JSON.stringify(WorkOrderLevelTreevalue).replace(/name/g, "label"))
    // 3、再将WorkOrderLevelTreeLable数组中的childs修改为children 存储到state的WorkOrderLevelTree中(WorkOrderLevelTree中value、label、children都已修改完成了)
    state.WorkOrderLevelTree = JSON.parse(JSON.stringify(WorkOrderLevelTreeLable).replace(/childs/g, "children"))
  },
}

iView这种方法有bug,当修改的键名和键值一样时,全局修改会修改所有相同的值。

但也有优势,服务器返回的数据无论嵌套几级,所有键名都会被修改。

如果大家担心会修改掉键值,那可以去看看这位大佬的笔记:链接

2、以下内容是iView组件的v-model数据的绑定,必须是一个数组

 

woTypeCode、woContentCode这两个是后端同事提供的,分别级联的一级和二级,发请求获取数据时需要的参数。

下面是发请求对参数进行整理。

 

3、Cascader组件的input框右边有一个x,可以清空input框内容,一般在清空之后,需要重新发请求来获取数据,可我翻遍文档也没找到关于这个叉的方法,在这里我对input的数据进行了watch监听,解决了清空内容重新发请求获取数据这个问题。

watch: {
    form: {
      handler: function (newVal) {
        if (newVal.workTypeContent.length == 0) {
          console.log('input框的数据被清空了,要重新发请求获取数据啦')
          this.getTableList()
        }
      },
      deep: true,
    }
  },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值