真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Element中如何使用Cascader動態(tài)加載省\市\(zhòng)區(qū)數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)Element中如何使用Cascader動態(tài)加載省\市\(zhòng)區(qū)數(shù)據(jù),小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供滄縣網(wǎng)站建設(shè)、滄縣做網(wǎng)站、滄縣網(wǎng)站設(shè)計、滄縣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、滄縣企業(yè)網(wǎng)站模板建站服務(wù),10余年滄縣做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

element中的cascader其實是有動態(tài)加載次級選項的方法。

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

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

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

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

怎么找了?

當(dāng)然只能遞歸了。

Element中如何使用Cascader動態(tài)加載省\市\(zhòng)區(qū)數(shù)據(jù)

簡化一下大致思路:

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數(shù)組第一個元素以外的全部元素。

   if (_.isEmpty(tailRegionArr)) {
    return regionOption
   }
   return this.findRegionOption(regionOption.children, tailRegionArr)
}

動態(tài)加載數(shù)據(jù):

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

整個頁面代碼大致就是:



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

關(guān)于“Element中如何使用Cascader動態(tài)加載省\市\(zhòng)區(qū)數(shù)據(jù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


網(wǎng)頁題目:Element中如何使用Cascader動態(tài)加載省\市\(zhòng)區(qū)數(shù)據(jù)
新聞來源:http://weahome.cn/article/ieespc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部