国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Element中的Cascader(級聯列表)動態加載省/市/區數據的方法

2019-11-19 11:56:29
字體:
來源:轉載
供稿:網友

element中的cascader其實是有動態加載次級選項的方法。

方法的原理是利用址(引用)傳遞,動態修改:options。

var c={name: 'bob'}var d=cd.name = 'tom'console.log(c)// {name: "tom"}

http://element-cn.eleme.io/#/zh-CN/component/cascader#dong-tai-jia-zai-ci-ji-xuan-xiang

其中找到究竟需要在那層添加數據就變成一個很麻煩的問題。

怎么找了?

當然只能遞歸了。

簡化一下大致思路:

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 // 動態加載賦值  })}

整個頁面代碼大致就是:

<template> <div>   <el-cascader :options="regionHiera" v-model="selectedRegion" change-on-select/> </div></template><script>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    })  },  }}</script>

整體思路還是找到點擊后的region,然后動態賦值給children。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金门县| 北海市| 金坛市| 民丰县| 瑞昌市| 张北县| 喀喇沁旗| 济阳县| 乌拉特后旗| 乾安县| 峨眉山市| 灌阳县| 宁津县| 弥勒县| 景泰县| 溧阳市| 无极县| 洛南县| 应城市| 金山区| 射洪县| 武义县| 呼伦贝尔市| 陈巴尔虎旗| 甘孜县| 灵璧县| 新和县| 文安县| 鹤岗市| 望城县| 舒城县| 陵川县| 鄂托克前旗| 沁水县| 和静县| 应城市| 福安市| 文水县| 大新县| 台中市| 定兴县|