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

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

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

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


準(zhǔn)備工作:

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

npm install --save linq

編輯build/webpack.base.conf.js

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

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

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

實現(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自動補全相關(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ù)集中找出所有一級菜單集合(含去重)
    //重新拼成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;
  },
  //點擊一級菜單全選/全不選實現(xiàn)
  checkAll(value){ //value: 點擊的一級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(); //所有該一級下二級的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="請輸入關(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>

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

相關(guān)文章

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

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

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

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

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

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

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

    vue如何重置data的所有屬性

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

营口市| 江达县| 梨树县| 鸡泽县| 益阳市| 雅江县| 高淳县| 竹山县| 茂名市| 博乐市| 济南市| 南京市| 林州市| 九寨沟县| 博客| 乌海市| 峨山| 淮阳县| 石首市| 鞍山市| 柞水县| 奉节县| 吕梁市| 绿春县| 庄河市| 保康县| 石棉县| 苏州市| 大新县| 玛沁县| 长垣县| 烟台市| 北海市| 镇沅| 尉氏县| 漾濞| 无为县| 玉溪市| 华亭县| 崇阳县| 新乡县|