最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue Element 分組+多選+可搜索Select選擇器實(shí)現(xiàn)示例

 更新時(shí)間:2018年07月23日 11:31:00   作者:w3stone  
這篇文章主要介紹了Vue Element 分組+多選+可搜索Select選擇器實(shí)現(xiàn)示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

最終效果(http://47.98.205.88:3000/mult_group_selection)見下圖。實(shí)際就是將element三種官方select實(shí)例整合起來,同時(shí)實(shí)現(xiàn)分組+多選+可搜索,此外點(diǎn)擊一級(jí)分組名可以實(shí)現(xiàn)全選/全不選。供有相關(guān)需求的開發(fā)者參考


準(zhǔn)備工作:

除了vue腳手架、element等必要包之外。該項(xiàng)目還用到了linq.js(https://github.com/mihaifm/linq),該工具可以快速?gòu)臄?shù)組中查找所需內(nèi)容。

npm install --save linq

編輯build/webpack.base.conf.js

module:{
  ......
  //添加
  new webpack.ProvidePlugin({
   Enumerable: "linq"
  })
}

數(shù)據(jù)源格式:

var selectList = [
 {
  name:"",//一級(jí)名稱
  CName:"", //二級(jí)名稱
  value:"" //值
 },
 {name:"",CName:"",value:""},
 ......
]

實(shí)現(xiàn):

script

data (){
 return{  
  selectModel: [],
  multipleSelectOption:[],
 }
},
methods:{
  //將源數(shù)據(jù)轉(zhuǎn)成element所需格式
  transMultipleSelectOption(){
    var level1List = Enumerable.from(this.allSelectList).distinct("o=>o.name").toArray();
       
     var newArr = level1List.map(item=>{
       let children = Enumerable.from(this.allSelectList).where((o)=>{return o.name==item.name;}).toArray();

       var options = children.map(itemc=>{
         return {"name": itemc.CName, "value":itemc.value};
       });    
       return {"name": item.name, "options":options}
     });
     this.multipleSelectOption = newArr;
  },    
  //重置options(select自動(dòng)補(bǔ)全相關(guān))
  remoteMethod(queryString, lists) { //lists:原始數(shù)據(jù)
     var mappedList = Enumerable.from(lists).where((o)=>{return o.CName.indexOf(queryString)!=-1 
       || o.name.indexOf(queryString)!=-1;}).toArray(); //找出匹配搜索關(guān)鍵字的數(shù)據(jù)集
     var level1List = Enumerable.from(mappedList).distinct("o=>o.name").toArray(); //從所匹配的數(shù)據(jù)集中找出所有一級(jí)菜單集合(含去重)
    //重新拼成element所需的數(shù)據(jù)格式
     var newArr = level1List.map(item=>{
       let children = Enumerable.from(mappedList).where((o)=>{return o.name==item.name;}).toArray();

       var options = children.map(itemc=>{
         return {"name": itemc.CName, "value":itemc.value};
       });    
       return {"name": item.name, "options":options}
     });
     this.multipleSelectOption = newArr;
  },
  //點(diǎn)擊一級(jí)菜單全選/全不選實(shí)現(xiàn)
  checkAll(value){ //value: 點(diǎn)擊的一級(jí)name
     var list = Enumerable.from(this.multipleSelectOption).where((o)=>{return o.name==value;}).toArray();
     var level2ValueList = Enumerable.from(list[0].options).select("o=>o.value").toArray(); //所有該一級(jí)下二級(jí)的value集合

     var num=0;
     level2ValueList.forEach((value)=>{
       this.selectModel2.forEach((model, index)=>{
        if(model==value){
         this.selectModel2.splice(index, 1); //如有匹配,先刪除
         num++;
         return true;
        }
       })
      })

      if(num < level2ValueList.length){ //需要全選
       this.selectModel2 = this.selectModel2.concat(level2ValueList); //合并數(shù)組
      }
  
   }
},
mounted: function(){
   this.transMultipleSelectOption();
},

template

<el-select v-model="selectModel" multiple filterable remote reserve-keyword 
  placeholder="請(qǐng)輸入關(guān)鍵詞" :remote-method="(queryString)=>{
    remoteMethod(queryString, allSelectList);
  }">
  <el-option-group v-for="group in multipleSelectOption"
   :key="group.name"
   :label="group.name" 
   @click.native="checkAll(group.name)">
   <el-option v-for="item in group.options"
     :key="item.value"
     :label="item.name"
     :value="item.value">
   </el-option>
  </el-option-group>
</el-select>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue限制輸入框只能輸入8位整數(shù)和2位小數(shù)的代碼

    vue限制輸入框只能輸入8位整數(shù)和2位小數(shù)的代碼

    這篇文章主要介紹了vue限制輸入框只能輸入8位整數(shù)和2位小數(shù),文中我們使用v-model加watch 實(shí)現(xiàn)這一個(gè)功能,代碼簡(jiǎn)單易懂,需要的朋友可以參考下
    2019-11-11
  • Vuejs仿網(wǎng)易云音樂實(shí)現(xiàn)聽歌及搜索功能

    Vuejs仿網(wǎng)易云音樂實(shí)現(xiàn)聽歌及搜索功能

    這篇文章主要介紹了Vuejs仿網(wǎng)易云音樂實(shí)現(xiàn)聽歌及搜索功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • Vue使用預(yù)渲染代替SSR的方法

    Vue使用預(yù)渲染代替SSR的方法

    這篇文章主要介紹了Vue使用預(yù)渲染代替SSR的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vue如何重置data的所有屬性

    vue如何重置data的所有屬性

    這篇文章主要介紹了vue如何重置data的所有屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • VUE中使用TypeScript裝飾器實(shí)現(xiàn)表單驗(yàn)證的全過程

    VUE中使用TypeScript裝飾器實(shí)現(xiàn)表單驗(yàn)證的全過程

    這篇文章主要給大家介紹了關(guān)于如何在VUE中使用TypeScript裝飾器實(shí)現(xiàn)表單驗(yàn)證的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • vue插值表達(dá)式和v-text指令的區(qū)別

    vue插值表達(dá)式和v-text指令的區(qū)別

    這篇文章主要介紹了vue插值表達(dá)式和v-text指令的區(qū)別,{{}}這種語法叫做插值表達(dá)式,在插值表達(dá)式中可以寫任何合法的js表達(dá)式,下面來看看文章是怎么介紹該內(nèi)容的吧,需要的朋友可以參考一下
    2021-11-11
  • 前端設(shè)置cookie之vue-cookies使用及說明

    前端設(shè)置cookie之vue-cookies使用及說明

    這篇文章主要介紹了前端設(shè)置cookie之vue-cookies使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 分享7個(gè)成為更好的Vue開發(fā)者的技巧

    分享7個(gè)成為更好的Vue開發(fā)者的技巧

    作為使用Vue已經(jīng)很多年的人,特別是去年一直在使用?Vue3,因此,學(xué)到了很多東西。所以本文為大家準(zhǔn)備了7個(gè)讓我們成為更好?Vue?開發(fā)者的技巧,需要的可以參考一下
    2022-06-06
  • vue組件中使用iframe元素的示例代碼

    vue組件中使用iframe元素的示例代碼

    本篇文章主要介紹了vue組件中使用iframe元素的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Vue3響應(yīng)式對(duì)象Reactive和Ref的用法解讀

    Vue3響應(yīng)式對(duì)象Reactive和Ref的用法解讀

    這篇文章主要介紹了Vue3響應(yīng)式對(duì)象Reactive和Ref的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評(píng)論

石门县| 敖汉旗| 宝应县| 合阳县| 乌审旗| 肇庆市| 万源市| 六盘水市| 盱眙县| 师宗县| 鹿邑县| 文登市| 湖北省| 长泰县| 武宁县| 扬州市| 清镇市| 江川县| 高阳县| 栾川县| 克东县| 融水| 呼图壁县| 石泉县| 田东县| 磐石市| 印江| 扎囊县| 屯留县| 英德市| 绥化市| 阿拉尔市| 息烽县| 策勒县| 淄博市| 牙克石市| 楚雄市| 定西市| 长乐市| 万宁市| 唐海县|