• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    Element中的Cascader(級聯(lián)列表)動態(tài)加載省市\(zhòng)區(qū)數(shù)據(jù)的方法

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 21:59:43
    文檔

    Element中的Cascader(級聯(lián)列表)動態(tài)加載省市\(zhòng)區(qū)數(shù)據(jù)的方法

    Element中的Cascader(級聯(lián)列表)動態(tài)加載省\市\(zhòng)區(qū)數(shù)據(jù)的方法: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.e
    推薦度:
    導(dǎo)讀Element中的Cascader(級聯(lián)列表)動態(tài)加載省\市\(zhòng)區(qū)數(shù)據(jù)的方法: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.e

    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)然只能遞歸了。

    簡化一下大致思路:

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

    整個頁面代碼大致就是:

    <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 //后臺返回數(shù)據(jù)
     regionOptionInUI.children = regionChildrenTransfomed
     })
     },
     }
    }
    </script>

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

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Element中的Cascader(級聯(lián)列表)動態(tài)加載省市\(zhòng)區(qū)數(shù)據(jù)的方法

    Element中的Cascader(級聯(lián)列表)動態(tài)加載省\市\(zhòng)區(qū)數(shù)據(jù)的方法: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.e
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品人妻中文av一区二区三区| 日韩精品无码一区二区三区免费| 日韩欧美国产精品第一页不卡| 国产精品91av| 一本色道久久88精品综合| 国产精品视频九九九| 国产精品素人搭讪在线播放| 亚洲精品tv久久久久久久久| 久久精品18| 国产成人精品一区二三区在线观看| 国精品午夜福利视频不卡| 亚洲精品无码av天堂| 国自产精品手机在线观看视频| 欧美精品高清在线观看| 国产国产精品人在线视 | 国语自产少妇精品视频| 亚洲精品人成无码中文毛片| 久久久久99精品成人片三人毛片| 国产精品女同一区二区久久| 亚洲国产成人精品不卡青青草原| 国产精品视频分类一区| 99久久99久久精品免费看蜜桃| 日韩精品无码久久久久久| 亚洲精品无码日韩国产不卡?V| 久久精品国产72国产精福利| 国产精品欧美久久久久天天影视 | 91精品无码久久久久久五月天| 国产精品爱啪在线线免费观看| 精品亚洲成AV人在线观看| 麻豆aⅴ精品无码一区二区| 日韩国产精品无码一区二区三区| 中文字幕久久精品无码| 自拍中文精品无码| 亚洲AV无码久久精品色欲| 久久亚洲私人国产精品vA| 狼色精品人妻在线视频| 久久Av无码精品人妻系列| 国产精品国产三级国产AV主播| 国产精品成人观看视频国产| 国产午夜精品理论片久久影视| 国产香蕉精品视频在|