element中的cascader其实是有动态加载次级选项的方法。

方法的原理是利用址(引用)传递,动态修改:options。

var c={name: 'bob'}

var d=c

d.name = 'tom'

console.log(c)

// {name: "tom"}

其中找到究竟需要在那层添加数据就变成一个很麻烦的问题。

怎么找了?

当然只能递归了。

简化一下大致思路:

var a = [

{

value: '2',

children: [

{

value: '2-1',

children: [

{

value: '2-1-1',

children: [],

},

],

},

{

value: '2-2',

children: [

{

value: '2-2-1',

children: [],

},

{

value: '2-2-2',

children: [

{

value: '2-2-2-1',

children: [],

},

],

},

],

},

],

},

]

var b = ['2','2-2','2-2-1']

那么我们就需要通过b找到a所在的位置。

a[0].children[1].children[0]

{

value: '2-2-1',

children: [],

},

然后再赋值:

a[0].children[1].children[0].children = [{value: '2-2-1-1',children: []}]

console.log(a)

编写function:

findRegionOption(regionOptions, regionArr) {

if (_.isEmpty(regionArr) || _.isEmpty(regionOptions)) {

return null

}

let regionId = _.first(regionArr)

let regionOption = _.find(regionOptions, regionOption => {

return regionOption.value === regionId

})

if (!regionOption) {

return null

}

let tailRegionArr = _.tail(regionArr) // lodash的tail方法,获取除了array数组第一个元素以外的全部元素。

if (_.isEmpty(tailRegionArr)) {

return regionOption

}

return this.findRegionOption(regionOption.children, tailRegionArr)

}

动态加载数据:

loadRegionChild(regionIdArr) {

let regionOptions = this.regionHiera

let regionOptionInUI = this.findRegionOption(regionOptions, regionIdArr)

if (

!regionOptionInUI ||

!regionOptionInUI.children ||

regionOptionInUI.children.length > 0

) {

return null

}

let regionKey = _.last(regionIdArr)

if (!regionKey) {

return null

}

api

.getRegionHiera(regionKey)

.then(res => {

let regionHiera = res.data

regionOptionInUI.children = regionChildrenTransfomed // 动态加载赋值

})

}

整个页面代码大致就是:

export default {

name: 'Test',

data() {

return {

selectedRegion: [],

regionHiera: [

{ label: 'Malaysia', value: '136', children: [] },

{ label: 'Indonesia', value: '106', children: [] },

{ label: '中华人民共和国', value: '100000', children: [] },

{ label: 'United States', value: '244', children: [] },

],

}

},

watch: {

selectedRegion(nv) {

this.loadRegionChild(nv)

},

},

methods: {

findRegionOption(regionOptions, regionArr) {

if (_.isEmpty(regionArr) || _.isEmpty(regionOptions)) {

return null

}

let regionId = _.first(regionArr)

let regionOption = _.find(regionOptions, regionOption => {

return regionOption.value === regionId

})

if (!regionOption) {

return null

}

let tailRegionArr = _.tail(regionArr)

if (_.isEmpty(tailRegionArr)) {

return regionOption

}

return this.findRegionOption(regionOption.children, tailRegionArr)

},

loadRegionChild(regionIdArr) {

let regionOptions = this.regionHiera

let regionOptionInUI = this.findRegionOption(regionOptions, regionIdArr)

if (

!regionOptionInUI ||

!regionOptionInUI.children ||

regionOptionInUI.children.length > 0

) {

return null

}

let regionKey = _.last(regionIdArr)

if (!regionKey) {

return null

}

api

.getRegionHiera(regionKey)

.then(res => {

let regionHiera = res.data //后台返回数据

regionOptionInUI.children = regionChildrenTransfomed

})

},

}

}

整体思路还是找到点击后的region,然后动态赋值给children。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

cascader 动态加载 回显_Element中的Cascader(级联列表)动态加载省\市\区数据的方法...相关推荐

  1. elementui 加载中_ElementUI cascader级联动态加载回显和搜索看这个就够了

    这一篇是上一次讨论cascader级联动态加载回显问题的延续,文末有链接. 以下是思考和开发的过程,不感兴趣可以直接看使用文档. https://github.com/zhuss/lazy-casca ...

  2. cascader 动态加载 回显_ElementUI cascader级联动态加载回显和搜索看这个就够了

    这一篇是上一次讨论cascader级联动态加载回显问题的延续,文末有链接. 以下是思考和开发的过程,不感兴趣可以直接看使用文档. https://github.com/zhuss/lazy-casca ...

  3. 动态加载 回显_ElementUI cascader级联动态加载及回显

    先看图,你是否也遇到这个需求? 如果你正在焦头烂额,无脑抓瞎,那么你来对地方了,因为我将给你一个简单易懂的实现方案. 我也在网上翻了无数页答案,也照着别人的代码和思路尝试了,事实上并不能解决我这个棘手 ...

  4. cascader 动态加载 回显_elementUI的cascader级联选择控件的默认值(回显)问题

    其实所谓回显,也只是默认值的问题.例如,一个省市联动,如果当一个用户修改自己信息的时候,那么他能看到级联选择的值,也就是说 在修改页面我们给级联选择器赋值一个默认值就可以了.截图是官方文档 vchl0 ...

  5. python处理回显_Python中getpass模块无回显输入源码解析

    本文主要讨论了python中getpass模块的相关内容,具体如下. getpass模块 昨天跟学弟吹牛b安利Python标准库官方文档的时候偶然发现了这个模块.仔细一看内容挺少的,只有两个主要api ...

  6. elementui 下拉框回显_element-ui 中el-select表单不回显和校验不通过的问题

    项目中有一个需求,填写表单,有两个相关联的下拉框,要根据部门筛选部门内的人员 当部门切换时,清空负责人里的内容 一开始的写法 v-for="(item,i) in getDepartment ...

  7. java 多级级联菜单回显_详解element-ui级联菜单(城市三级联动菜单)和回显问题...

    代码最下面 各项的参数截图 代码如下 v-model="ruleForm.censusLand" style="width:180px;padding-left:7px; ...

  8. html td如何设置字体加黑,如何在td中控制字体右对齐且加粗_html/css_WEB-ITnose

    800 居右对齐已经实现了,怎么实现字体加粗呢 ?? 谢谢 回复讨论(解决方案) 像这样的问题,楼主最好是先在网上找找答案!这才是好的学习方法 font-weight允许值 normal | bold ...

  9. cascader 动态加载 回显_Elementui cascader 级联选择器 动态加载数据,保存后回显的问题...

    问题描述 使用elementui,进行地区选择,分省市区三级动态加载,首次保存后,再次回看数据,怎么选中上次保存的地区 省市区三级都是动态加载,下次回来,只有省一级数据,model里面存的是一个数组, ...

最新文章

  1. win7计算机不支持此接口,win7系统IIS服务器启动失败显示不支持此接口的解决方法...
  2. C#中自定义类数组和结构数组的使用
  3. xargs的简单解析
  4. 最快60秒完成新冠病毒核酸对比 阿里云向社会免费开放基因计算服务
  5. JVM内存分配策略原
  6. opencv4 c++ 提取图片中的白色区域_OpenCV4.5.0 更快的SIFT,更强的数字识别,以及色彩校正、深度融合...
  7. 判断滚动条到底部的JS代码
  8. UIImageView只显示一半
  9. python difflib 编辑距离_LeetCode--072--编辑距离(python)
  10. 发送需要smtp认证的邮件
  11. IDEA使用Tomcat部署项目
  12. 「硬见小百科」几种镜像恒流源电路分析
  13. 深入理解设计模式-设计模式七大原则
  14. FlashFXP绿色版
  15. 重磅开源!平安产险提出TableMASTER:表格识别大师
  16. K210频谱显示桌面摆件(Sipeed Maix Dock)
  17. TypeScript 初级教程-姜威-专题视频课程
  18. 《桃花庵歌》- 唐寅
  19. 在德国如何优雅地和同事说再见
  20. spring-boot整合redies、mybatis、thymeleaf

热门文章

  1. linux 硬链接 软链接 简介
  2. Java Garbage Collection
  3. Python3猜数字小游戏
  4. Java学习之for---each语句
  5. golang-exec cmd data race
  6. TCP校验和的设计与实现
  7. gearman php 进程守护,用 Gearman 分发 PHP 应用程序的工作负载
  8. mysql当数据改变时_当数据库里面的价格变化时,发送信息到企业微信中
  9. java中的递归算法_java中的递归算法
  10. 内存泄漏_内存泄漏–测量频率和严重性