element-ui中el-cascader动态加载和默认值详解

 更新时间:2023年05月05日 10:20:06   作者:zepcjsj0801  
vue+elementUI项目中el-cascader级联选择器使用频率非常高,下面这篇文章主要给大家介绍了关于element-ui中el-cascader动态加载和默认值的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

刚解决了这个问题,趁热赶快拿出来凉凉,明天早上起来估计会忘

下拉框的选择和默认值对于我来说一直都是个让人头疼的事,倒不是有多么难,而是很繁琐。

要保证有值,还要有显示的文字。表单提交后,再回过头编辑还要显示出来选择的项。

进入正题吧,我看别人写的文章也非常讨厌巴拉巴拉一堆没用的。

首先el-cascader最常用的是显示省市区,所有省市区三四千项一下子加载出来总会有个卡顿的过程,所以我一般用动态加载,这个element的文档和例子很清楚了。

这是我代码中的一部分,尽可能的去掉了多余的代码

<el-cascader ref="areas" v-model="address.area_ids" 
:options="options" :props="props" separator="/" />
data() {
      return {
        options: [],
        address: {
          area: [],
          area_ids: [],
          value: '',
          lat: '',
          lng: ''
        },
        props: {
          lazy: true, //动态加载开关
          lazyLoad(node, resolve) { //动态加载函数
            const { level,value,label} = node;
            get("../city/get", {
              parentid: value
            }).then((res) => {
              if (res.state == 'success') {
                var data = res.data;
                data.map(item => {
                  item.leaf = item.child == "0" //leaf如果是true就结束了,意味着没有下一级
                  return item;
                })
                resolve(data);
              } else {
                resolve([]);
              }
            })
          }
        }
      }
    },

正常选择没问题。一般刚开始的options默认的是第一级的数组

最头疼的部分,在编辑表单时要显示出来前面已经选择过的项,也就是回显默认值,首先保证v-mode的值是长度是3的数组(结合情况,不一定非要是3),一定保证[省,市,区]顺序正确,我昨天大意写错了市的id,检查了一天没发现问题。

另外,既然要显示默认值,肯定也要给el-cascader一个默认的options,要保证是这种结构

[
	{
	'value':'1',
	'label':'河南',
	'leaf':false,//不带leaf,选项后面没有向右的箭头,下面的自行补充
	'children':[{
					'value':'11',
					'label':'郑州',
					'children':[
						{
							'value':'111',
							'label':'中原区'
						},
						{
							'value':'112',
							'label':'二七区'
						}
					]
				},{
					'value':'12',
					'label':'洛阳'
				}]
	},
	{
	'value':'2',
	'label':'河北',
	}
]

应该很清晰了,就是保证所选路径的上下级和平级数据完整,为什么要完整,因为还有下面一个问题。

在options处理完后,默认值应该就可以正常显示了。

但是当再更换地区市,选了一下“郑州”后发现,郑州的子级重复了(选“河南”也一样),这也好理解,说明是郑州的子级又加载了一遍并且填充到下级的选项组里了,新加载的和默认的重复了。这毕竟不完美,做程序员慢慢有了强迫症了,扒了扒element的源码,问题很好解决,只是element官方没有简单明了的说出来。

在处理完options和v-model后,要处理选中项的加载状态,否则还会重新加载一次。

//上面的代码自行补充
		this.$nextTick(_=>{
              var node=this.$refs.areas.getCheckedNodes(); //获取当前选中节点
              if(node&&node[0]&&node[0].pathNodes){//选中节点的所有父节点
                for(var i=0;i<node[0].pathNodes.length;i++){
                  node[0].pathNodes[i].loaded=true; //节点的加载状态设为true,就不会再加载了
                }
              }
            })

至此大功告成

总结

到此这篇关于element-ui中el-cascader动态加载和默认值的文章就介绍到这了,更多相关el-cascader动态加载和默认值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决vue做详情页跳转的时候使用created方法 数据不会更新问题

    解决vue做详情页跳转的时候使用created方法 数据不会更新问题

    这篇文章主要介绍了解决vue做详情页跳转的时候使用created方法 数据不会更新问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 深入详解Vue中的路由懒加载

    深入详解Vue中的路由懒加载

    路由懒加载是一种优化技术,用于延迟加载应用程序中的路由组件,它可以提高初始加载速度并减少资源消耗,特别适用于大型单页应用,下面我们就来看看它的原理与使用吧
    2023-08-08
  • vue组件父子间通信之综合练习(聊天室)

    vue组件父子间通信之综合练习(聊天室)

    这篇文章主要为大家详细介绍了vue组件父子间通信之综合练习聊天室制作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Vue出现did you register the component correctly?解决方案

    Vue出现did you register the component 

    这篇文章主要介绍了Vue出现did you register the component correctly?解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Element Notification通知的实现示例

    Element Notification通知的实现示例

    这篇文章主要介绍了Element Notification通知的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • vue3中的响应式原理-effect

    vue3中的响应式原理-effect

    这篇文章主要介绍了vue3中的响应式原理-effect,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue项目适配屏幕分辨率与屏幕的缩放适配详细教程

    vue项目适配屏幕分辨率与屏幕的缩放适配详细教程

    现在很多14寸的笔记本,出厂默认就是150%的显示。导致很多时候我们的项目,自己开发的时候都是按照100%比例来开发的,上线了就会发现这个问题,今天就这个问题给出解决方案,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • vue 进阶之实现父子组件间的传值

    vue 进阶之实现父子组件间的传值

    这篇文章主要介绍了vue 进阶之实现父子组件间的传值,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)

    Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)

    这篇文章给大家介绍了基于vue实现拖动滑块验证功能,代码引用css与js都是线上的,将代码全部复制到一个html中可以直接打开,超级简单,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-08-08
  • 详解Vue开发网站seo优化方法

    详解Vue开发网站seo优化方法

    这篇文章主要介绍了Vue开发网站seo优化方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论