vue ElementUI级联选择器回显问题解决

 更新时间:2022年09月15日 08:31:12   作者:RealPluto  
这篇文章主要介绍了vue ElementUI级联选择器回显问题解决,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

1. 分析问题

【问题描述】 使用 ElementUI 的 Cascader 级联选择器组件,如果使用了懒加载和动态加载数据会导致,在v-model中的数据据重新放到 Cascader 级联组建后,会出现数据不回显的问题。 【原因分析】 在级联组件中虽然在v-model中重新传入选中的数据,但采用了懒加载+远程数据的方式构建选项数据,此时级联组件的结构数据并未生成,此时仅有选中后的数据而没有选项数据,因此导致了级联选择器没有数据可供显示,也就导致了数据不回显的问题。 【解决方案】 ① 前端渲染完整的选项数据,此方案需要前端渲染的数据量极大,可能导致页面崩溃,不建议采用此方式处理; ② 仅渲染选中后的数据,即仅构建选中后的选项结构,后端返回的数据结构进行处理后依然可以配合懒加载+远程数据的方式(需要对渲染生成的数据进行去重,避免和远程访问的数据重复)

2. 解决问题

借助Cascader 级联选择器组件的options属性,构建选项结构配合v-model即可实现数据回显,如果想配合懒加载+远程数据,需要指定级联组件的属性信息。

{
  "label": "浙江省",
  "value": 12321
  "children": [{
      "label": "杭州市",
      "value": 4565
   }]
}

【实现方式】

<el-cascader
  v-model='data'
  :props='cascadeProps'
  :options='cascadeOptions'
  filterable
  ></el-cascader>
cascadeProps: {
  multiple: true,
    checkStrictly: true,
      // 启用懒加载
      lazy: true,
        // 远程数据访问
        lazyLoad: async (node, resolve) => {
          const { data, level} = node
          const parentCode = level === 0 ? '000' : data.nodeCode
          const nodes = await this.getRemoteData(parentCode, level)
          // 去除重复节点
          let nodeFilter = nodes.filter(n => {
            if (!this.optionList.includes(n.value)) {
              return n
            }
          })
          resolve(nodeFilter)
        },
},
getRemoteData(parentCode, level) {
  return new Promise((resolve, reject) => {
    getDistrictData({ parentCode }).then((res) => {
      resolve(this.formatData(res.data, level))
    })
  })
},

  formatData(data, level) {
    let districtType = ''
    switch (level) {
      case 0:
        districtType = 'province'
        break
      case 1:
        districtType = 'city'
        break
      case 2:
        districtType = 'district'
        break
      default:
        break
    }
    return data.map((item) => {
      return {
        districtType,
        nodeCode: item.nodeCode,
        value: item.districtId,
        label: item.name,
        leaf: level >= 2,
      }
    })
  },

到此这篇关于ElementUI级联选择器回显问题解决的文章就介绍到这了,更多相关ElementUI选择器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中的event bus非父子组件通信解析

    vue中的event bus非父子组件通信解析

    本篇文章主要介绍了 vue中的event bus非父子组件通信解析 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • vue具名插槽的基本使用实例

    vue具名插槽的基本使用实例

    Vue 中的插槽在开发组件的过程中其实是非常重要并且好用的。下面这篇文章主要给大家介绍了关于vue具名插槽基本使用的相关资料,需要的朋友可以参考下
    2021-05-05
  • Vue项目中Websocket的使用实例

    Vue项目中Websocket的使用实例

    WebSocket就诞生了,它最大特点就是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,下面这篇文章主要给大家介绍了关于Vue项目中Websocket使用的相关资料,需要的朋友可以参考下
    2023-02-02
  • vue使用天地图、openlayers实现多个底图叠加显示效果

    vue使用天地图、openlayers实现多个底图叠加显示效果

    这篇文章主要介绍了vue使用天地图、openlayers实现多个底图叠加显示,根据返回的经纬度列表通过天地图、openlayers实现底图添加,本文通过示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-04-04
  • Vue中实现动画效果的多种方法小结

    Vue中实现动画效果的多种方法小结

    平时我们能在网页上看到很多动画效果,这些效果看起来就很引人注目,我们是不是也可以在自己的项目中添加一些动画效果,让我们的页面看起来更加的高端大气上档次,博人眼球,所以本文给大家介绍了Vue中实现动画效果的多种方法,需要的朋友可以参考下
    2024-07-07
  • vue前端框架—Mint UI详解(更适用于移动端)

    vue前端框架—Mint UI详解(更适用于移动端)

    这篇文章主要介绍了vue前端框架—Mint UI的详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 使用idea创建vue项目的图文教程

    使用idea创建vue项目的图文教程

    Vue.js是一套构建用户界面的框架,只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合,下面这篇文章主要给大家介绍了关于使用idea创建vue项目的相关资料,需要的朋友可以参考下
    2022-08-08
  • vue 根据选择的月份动态展示日期对应的星期几

    vue 根据选择的月份动态展示日期对应的星期几

    这篇文章主要介绍了vue 如何根据选择的月份动态展示日期对应的星期几,帮助大家更好的利用vue框架处理日期需求,感兴趣的朋友可以了解下
    2021-02-02
  • vue+elementUI 实现内容区域高度自适应的示例

    vue+elementUI 实现内容区域高度自适应的示例

    这篇文章主要介绍了vue+elementUI 实现内容区域高度自适应的示例,帮助大家更好的理解和使用vue,感兴趣的朋友可以了解下
    2020-09-09
  • element-ui中实现tree子节点部分选中时父节点也选中

    element-ui中实现tree子节点部分选中时父节点也选中

    这篇文章主要介绍了element-ui中实现tree子节点部分选中时父节点也选中的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08

最新评论