亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue 實現(xiàn)搜索的結(jié)果頁面支持全選與取消全選功能

2019-11-19 11:36:40
字體:
供稿:網(wǎng)友

演示地址,打開、搜索、隨便點(diǎn)

http://msisliao.github.io/dem...

npm i element-ui -S

// main.jsimport ElementUI from 'element-ui'import 'element-ui/lib/theme-chalk/index.css'Vue.use(ElementUI)

demo功能概覽

  • 默認(rèn)沒有全選,搜索時支持全選與取消全選,
  • 將選擇的數(shù)據(jù)添加到已選中,已選刪除時改變當(dāng)前搜索列表的狀態(tài)與全選按鈕的狀態(tài)
  • 全選時全部追加到已選,取消全選時從已選中刪除當(dāng)前搜索的列表

功能列表

1、搜索時展示相應(yīng)的數(shù)據(jù)列表,支持全選與取消全選,(默認(rèn)展示所有數(shù)據(jù)時不支持全選)

datas() { // 每次搜索的數(shù)據(jù) 根據(jù)下拉菜單的值的變化 if (this.value !== "") { return this.listItem.list.filter(item => {  return item.BrandNames.includes(this.value); }); } else { return this.listItem.list; // 沒有搜索的關(guān)鍵詞時展示全部數(shù)據(jù) } },

2、搜索的下拉菜單去重

filDatas() { // 利用reduce 下拉菜單去重 var obj = {}; return this.listItem.list.reduce(function(item, next) { obj[next.BrandNames] ? "" : (obj[next.BrandNames] = true && item.push(next)); return item; }, []); }

3、當(dāng)前界面全選時添加到已選中,當(dāng)前界面取消全選時,從已選的數(shù)據(jù)刪除當(dāng)前搜索出來的列表數(shù)據(jù),

// 每次搜索列表的全選 與 取消全選 ckAll() { this.allck = !this.allck; //點(diǎn)擊全選 變 取消選擇 let arrys = []; //存放復(fù)選框為取消狀態(tài)的數(shù)據(jù) if (this.allck) { // 將當(dāng)前搜索的列表數(shù)據(jù)追加到已選中 this.datas.forEach(item => {  item.ck = true;   if (!this.arr.includes(item)) { // 追加復(fù)選框為false的數(shù)據(jù)  this.arr.push(item);  this.ckarr.push(item);  } }); } else { this.datas.forEach(item => { item.ck = false; }); //當(dāng)前搜索的數(shù)據(jù)列表復(fù)選框設(shè)為取消狀態(tài) arrys = this.datas.filter(item => { return !item.ck; }); //把復(fù)選框為false的數(shù)據(jù) 拿出來 this.datas.forEach(items => { //已選那里刪除當(dāng)前搜索列表復(fù)選框為false的數(shù)據(jù)  arrys.forEach(item => {  if (item.BrandID == items.BrandID) { this.arr.splice(this.arr.indexOf(item), 1);}  }); }); this.ckarr = []; //當(dāng)前搜索列表為復(fù)選框的數(shù)據(jù)清空 } },

4、列表選中時添加到已選,全部選中時改變?nèi)x狀態(tài)(變?nèi)∠x)

// 監(jiān)聽當(dāng)前搜索列表的勾選數(shù)據(jù) ckarr: function() { if (this.value !== "") { this.ckarr.length == this.datas.length ? this.allck = true : this.allck = false; //如果已選等于當(dāng)前搜索列表 改變?nèi)x狀態(tài) } }

5、在已選中操作刪除時,如果刪除的是當(dāng)前搜索的列表,當(dāng)前全選改變狀態(tài),如果刪除的非當(dāng)前搜索列表,當(dāng)前全選狀態(tài)不變(這里有點(diǎn)繞)

handleClose(tag) { this.arr.splice(this.arr.indexOf(tag), 1); // 點(diǎn)哪刪哪 this.ckarr.forEach(items => { // 判斷刪除的是否是當(dāng)前搜索列表的數(shù)據(jù) 是的話改變?nèi)x狀態(tài) if (items.BrandID == tag.BrandID) {  this.ckarr.splice(this.ckarr.indexOf(tag), 1); } }); this.listItem.list.forEach(items => { // 刪除已選時改變數(shù)據(jù)列表狀態(tài) if (items.BrandID == tag.BrandID) { items.ck = false; } }); },

app.vue

<template> <div class='tpbox'> <el-select v-model="values" filterable placeholder="請選擇" size="mini" clearable >  <el-option v-for="item in filDatas" :key="item.BrandID" :label="item.BrandNames" :value="item.BrandNames" :value-key='item.BrandID'>  </el-option> </el-select> <!-- 搜索的列表 --> <div v-if="values!=='' && values!==null ">  <p class='ck-btn-box'>  <el-button size="mini" @click="ckAll">{{allck?'取消全選':'全選'}}</el-button>  </p>  <ul>  <li v-for="item in datas" :key="item.BrandID">   <span>AA{{item.BrandTypeName}}</span>   <span>BB{{item.BrandCName}}</span>   <span>CC{{item.BrandName}}</span>   <span>   <el-checkbox v-model="item.ck" @change="handItem(item)">{{item.BrandNames}}</el-checkbox>   </span>  </li>  </ul> </div> <!-- 默認(rèn)列表 --> <ul v-else>  <li v-for="item in datas" :key="item.BrandID">  <span>AA{{item.BrandTypeName}}</span>  <span>BB{{item.BrandCName}}</span>  <span>CC{{item.BrandName}}</span>  <span>   <el-checkbox v-model="item.ck" @change="handItem(item)">{{item.BrandNames}}</el-checkbox>  </span>  </li> </ul> <p class='checked-box' v-if="this.arr.length>0">  已選:  <span @click="clearAll" class='clearll-txt'>清空</span>  <el-tag v-for="tag in this.arr" :key="tag.BrandID" closable @close="handleClose(tag)" :disable-transitions=true>  {{tag.BrandName}} / {{tag.BrandNames}}  </el-tag> </p> </div></template><script>export default { data() { return { allck: false, //控制全選 當(dāng)沒有任何操作時每次默認(rèn)為 true ckarr: [], //每次搜索出來點(diǎn)擊了復(fù)選框 arr: [], //點(diǎn)擊了input的數(shù)據(jù) 存放所有的已選 values: "", listItem:{ list: [  {  BrandTypeName: "大類1 建材/家居 ", //品牌正常  BrandTypeID: 1,  BrandCName: "中類1 建筑材料",  BrandCID: 1,  BrandName: "小類1 水泥",  BransID: 1,  BrandNames: "紅水泥",  BrandID: 1,  ck: false  },  {  BrandTypeName: "大類1 建材/家居 ", //品牌在多個小類里  BrandTypeID: 1,  BrandCName: "中類2 家私定制",  BrandCID: 2,  BrandName: "小類2 電飯煲",  BransID: 2,  BrandNames: "松下",  BrandID: 2,  ck: false  },  {  BrandTypeName: "大類1 建材/家居 ",  BrandTypeID: 1,  BrandCName: "中類2 家私定制",  BrandCID: 2,  BrandName: "小類3 電壓力鍋",  BransID: 3,  BrandNames: "松下",  BrandID: 3,  ck: false  },  {  BrandTypeName: "大類1 建材/家居 ", //品牌在多個中類小類里  BrandTypeID: 1,  BrandCName: "中類2 高檔家具",  BrandCID: 3,  BrandName: "小類2 家具類",  BransID: 4,  BrandNames: "品牌",  BrandID: 4,  ck: false  },  {  BrandTypeName: "大類1 建材/家居 ",  BrandTypeID: 1,  BrandCName: "中類2 豪華家具",  BrandCID: 4,  BrandName: "小類3 廚具類",  BransID: 5,  BrandNames: "品牌2",  BrandID: 5,  ck: false  },  {  BrandTypeName: "大類1 裝修/房產(chǎn) ",  BrandTypeID: 2,  BrandCName: "中類2 豪華家具",  BrandCID: 5,  BrandName: "小類3 沙發(fā)類",  BransID: 6,  BrandNames: "品牌3",  BrandID: 6,  ck: false  } ] } }; }, computed: { datas(){ if(!this.values){ return this.listItem.list } //每次搜索的數(shù)據(jù) if (this.values !== "") { return this.listItem.list.filter(item => {  return item.BrandNames.includes(this.values); }); }  }, filDatas() { //select下拉菜單去重 相同名字的子選項會存放在多個類別里 var obj = {}; return this.listItem.list.reduce(function(item, next) { obj[next.BrandNames] ? "" : (obj[next.BrandNames] = true && item.push(next)); return item; }, []); } }, watch: { // 監(jiān)聽每次搜索時的數(shù)據(jù)變化 datas: function(ary) { //搜索數(shù)據(jù)變化時 如果搜的結(jié)果全部是已選 第二次搜這個關(guān)鍵詞就變成 取消選擇 if (this.values !== "") { this.allck = false; //默認(rèn)每次搜索時是全選狀態(tài) 需判斷之前是否全選中的 有的話就是取消全選  ary.every( item => { item.ck ? !this.allck : this.allck }); // 將當(dāng)前搜索列表的已選拿出來 this.ckarr = this.datas.filter(item => {  if (item.ck) { return item; } }); } }, // 監(jiān)聽每次搜索列表的數(shù)據(jù)是否全部為選中 判斷已選的數(shù)據(jù)是不是等于當(dāng)前搜索列表的數(shù)據(jù) ckarr: function() { if (this.values !== "") { this.ckarr.length == this.datas.length ? this.allck = true : this.allck = false; //如果已選等于當(dāng)前搜索列表 改變?nèi)x狀態(tài) } }, }, methods: { // 數(shù)據(jù)列表的復(fù)選框點(diǎn)擊 handItem(item) { if (item.ck) { this.arr.push(item); //arr是所有復(fù)選框的數(shù)據(jù) 存放在已選中 this.ckarr.push(item); //ckarr是每次搜索列表點(diǎn)了復(fù)選框的數(shù)據(jù) 當(dāng)取消全選時 在已選的大數(shù)組中刪除 ckarr的數(shù)據(jù) } else { this.arr.splice(this.arr.indexOf(item), 1); this.ckarr.splice(this.arr.indexOf(item), 1); } }, // 已選中的 單個刪除 handleClose(tag) { this.arr.splice(this.arr.indexOf(tag), 1); // 點(diǎn)哪刪哪 this.ckarr.forEach(items => { // 判斷刪除的是否是當(dāng)前搜索列表的數(shù)據(jù) 是的話改變?nèi)x狀態(tài) if (items.BrandID == tag.BrandID) {  this.ckarr.splice(this.ckarr.indexOf(tag), 1); } }); this.listItem.list.forEach(items => { // 刪除已選時改變數(shù)據(jù)列表狀態(tài) if (items.BrandID == tag.BrandID) { items.ck = false; } }); }, // 清空操作 clearAll() { this.listItem.list.forEach(item => { item.ck = false; }); // 數(shù)據(jù)列表狀態(tài)恢復(fù) this.arr = []; //已選全部清空  this.ckarr = [] // 當(dāng)前搜索列表存放的已選全部清空 this.allck = false; //全選狀態(tài)恢復(fù) this.values='' //回到默認(rèn)數(shù)據(jù)  }, // 每次搜索列表的全選 ckAll() { this.allck = !this.allck; //點(diǎn)擊全選 變 取消選擇 let arrys = []; //存放復(fù)選框為取消狀態(tài)的數(shù)據(jù) if (this.allck) { // 將當(dāng)前搜索的列表數(shù)據(jù)追加到已選中 this.datas.forEach(item => {  item.ck = true;   if (!this.arr.includes(item)) { // 追加復(fù)選框為false的數(shù)據(jù)  this.arr.push(item);  this.ckarr.push(item);  } }); } else { this.datas.forEach(item => { item.ck = false; }); //當(dāng)前搜索的數(shù)據(jù)列表復(fù)選框設(shè)為取消狀態(tài) arrys = this.datas.filter(item => { return !item.ck; }); //把復(fù)選框為false的數(shù)據(jù) 拿出來 this.datas.forEach(items => { //已選那里刪除當(dāng)前搜索列表復(fù)選框為false的數(shù)據(jù)  arrys.forEach(item => {  if (item.BrandID == items.BrandID) { this.arr.splice(this.arr.indexOf(item), 1);}  }); }); this.ckarr = []; //當(dāng)前搜索列表為復(fù)選框的數(shù)據(jù)清空 } }, }};</script><style scoped>.tpbox { background: #fff; padding: 30px; height: 500px;} ul { margin-top: 15px; } li { justify-content: space-around; display: flex; line-height: 50px; color: #666; border-bottom: 1px solid #eee; } span { flex: 1; text-align: left; padding-left: 10px; } .checked-box { margin-top: 20px;  } .el-tag { margin-left: 10px; } .clearll-txt { color: red; cursor: pointer; } .ck-btn-box { margin-top: 30px; }</style>

總結(jié)

以上所述是小編給大家介紹的vue 實現(xiàn)搜索的結(jié)果頁面支持全選與取消全選功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
图片区小说区区亚洲五月| 欧美777四色影| 夜夜春很很躁夜夜躁| 一区二区三区视频国产日韩| 精品国产乱码久久久久久久软件| 一级做a爱片久久| 欧美亚洲国产一区在线观看网站| 啪啪一区二区三区| 老司机午夜在线| 亚洲视频手机在线观看| 国产黄色一级片| 欧美韩国日本在线观看| 国产色在线观看| 黄色香蕉视频在线观看| 久久三级毛片| av色资源站| 久久精品色妇熟妇丰满人妻| 中文字幕一区电影| 天天爽夜夜爽夜夜爽精品视频| 国产福利资源一区| 欧美一区二区三区久久| 99tv成人影院| 欧美一a一片一级一片| **性色生活片久久毛片| 国产精品久久免费观看| 亚洲色图欧美| 日本午夜精品一区二区三区| 精品久久久久久久久久久久久久久久久| 国产亚洲欧美日韩高清| 亚洲色图一区二区| 欧美91大片| 免费毛片b在线观看| 天天躁日日躁狠狠躁伊人| 久久99精品国产麻豆不卡| 北岛玲heyzo一区二区| 欧美一区二区三区久久精品茉莉花| 精久久久久久久久久久| 日韩综合第一页| 中文字幕网站视频在线| 国产高清视频在线观看| 91精品久久久久久久久久入口| 国产亚洲aⅴaaaaaa毛片| 国产精品一区二区三区在线免费观看| 国产精品天干天干在观线| 欧美肥老太太性生活| 日韩三级在线播放| 欧洲午夜精品久久久| 成人自拍视频网站| 免费av在线网站| 欧美在线观看禁18| 9国产精品午夜| 日韩在线视频不卡| 日本xxxwww免费视频| 中文字幕精品一区二区精品| 国产剧情日韩欧美| 在线观看av网站永久| 亚洲欧美在线视频观看| 国产精品欧美三级在线观看| 日韩精品123区| 一本久久知道综合久久| 日韩欧美卡一卡二| 中文字幕日本三级| 日本成年人网址| 国产手机视频在线| 日韩手机在线视频| 少妇久久久久| 人妻大战黑人白浆狂泄| 老司机午夜精品99久久| 91年精品国产| 美女在线观看www| 欧美日韩成人综合天天影院| 日本不卡123| 日本中文字幕网| 亚洲老头老太hd| 男女猛烈激情xx00免费视频| 在线免费观看的av| 跑男十一季在线观看免费| 欧美在线不卡视频| 国产不卡在线| 久久国产精品-国产精品| 三大队在线观看| 国产一区二区三区直播精品电影| 久久国产精品色婷婷| 性猛交ⅹxxx富婆video| 欧美日韩在线中文字幕| 粉嫩精品一区二区三区在线观看| 国产精品尤物视频| 美州a亚洲一视本频v色道| 高清av在线| 日韩少妇高潮抽搐| 国产精品久久久久久免费免熟| 国产男女激情视频| 精品激情国产视频| 欧亚av在线| 伊人一区二区三区久久精品| 99久久免费精品国产72精品九九| 成人在线观看高清| xxxx在线视频| 欧美下载看逼逼| 精品99久久久久成人网站免费| 中文字幕在线观看网址| 亚洲一区二区日韩| 免费不卡在线视频| 成人p站proumb入口| 任你躁在线精品免费| 丁香啪啪综合成人亚洲小说| 久久精品综合一区| 性欧美video另类hd尤物| 激情六月丁香| 日韩精品在在线一区二区中文| 欧美午夜女人视频在线| 成人国产精选| 国产精品视频一区二区三区,| 亚洲精品卡一卡二| 欧美日韩黄色一级片| 国产日本亚洲| 韩国一区二区三区在线观看| 黄色一级大片免费| 国产精品一区二区久久精品爱涩| 婷婷激情四射五月天| 在线国产精品网| 97人人做人人人难人人做| 中文字幕高清一区| av网址在线观看免费| 色网视频在线| 久久这里只有精品9| 日韩精品第一页| 国产麻豆剧传媒精品国产| 亚洲自拍都市欧美小说| 激情五月播播久久久精品| 久久久久成人精品免费播放动漫| 精品亚洲自拍| 一区二区三区在线免费视频| 欧美天堂视频| 国产成人亚洲综合无码| 日韩av电影免费观看高清完整版| 精品日韩一区二区| 国产69久久精品成人| 国产黄大片在线观看画质优化| 成人免费视频在线观看超级碰| 国产网站一区二区三区| 日本亚洲精品| 国产精品69久久久| 亚洲大胆人体大胆做受1| 日韩av一级| 欧美日韩性在线观看| 色综合天天综合在线视频| 2025中文字幕| 国产高清精品久久久久| a欧美人片人妖| 日韩成人伦理| 激情欧美一区二区三区黑长吊| 日本一区免费网站| 国产精品久久国产精麻豆96堂| 精品视频一区二区观看| 欧美性极品videosbest| 久久精品亚洲精品| 色阁综合伊人av| 91视频福利网| 国产欧美日韩另类| 亚洲精品乱码久久久久久按摩观| 久久久久久国产精品无码| 爱啪啪综合导航| 亚洲国产精品热久久| 制服.丝袜.亚洲.另类.中文| 97cao在线| 男人的天堂亚洲一区| 先锋影视中文字幕| 中文字幕在线观看免费视频| 欧美午夜理伦三级在线观看| 亚洲人成在线一二| 黑人极品videos精品欧美裸| 国产亚洲电影| 成人18视频免费69| 国产精品伦理一区二区三区| 丝袜美腿亚洲色图| 国产精品成人一区二区三区夜夜夜| 日本黄色入口| 国产亚洲视频系列| 国产91美女视频| 午夜精品久久久久影视| 欧美精品久久久久a| 青青在线视频一区二区三区| 成人有码视频在线播放| 欧美色片在线观看| 可骚可骚的黄视频网站| 一级淫片免费看| 欧美97人人模人人爽人人喊视频| 亚洲第一黄色| 成人在线免费小视频| 日本欧美肥老太交大片| 黄色激情在线视频| 欧美日韩人人澡狠狠躁视频| 桃乃木かなav在线播放| 日本精品一区在线观看| 手机看片一区二区| av免费观看网址| 牛牛影视精品影视| 一个人www欧美| 国产小视频在线免费观看| 精品一区二区三区在线观看l| 精品福利在线观看| 高清欧美电影在线| 欧美激情网址| 综合精品久久久| 精品freesex老太交| 色偷偷av亚洲男人的天堂| 日本视频中文字幕一区二区三区| julia京香一区二区三区| 天天摸天天做天天爽| 强开小嫩苞一区二区三区网站| 日本熟妇毛耸耸xxxxxx| 一道本成人在线| 嗯~啊~轻一点视频日本在线观看| 成人全视频免费观看在线看| 在线免费看污| 香蕉精品视频在线观看| 欧美美女在线直播| 欧美亚洲日本国产| 国产嫩草一区二区三区在线观看| 在线观看日韩视频| 国产三级在线免费| 欧美日韩高清一区二区不卡| 影音先锋亚洲精品| 国产精品亚洲片在线播放| 国产亚洲一区二区手机在线观看| 最新理论片影院| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品区一区| www.av在线播放| 四虎成人精品永久免费av九九| 亚洲精品国产suv一区| 一区二区三区在线免费观看| 99久久婷婷国产综合精品电影| 黄色一级大片在线免费观看| 女~淫辱の触手3d动漫| 免费91在线视频| 国产乱了高清露脸对白| 色天使在线观看| 一本久中文高清| 91在线视频九色| 成人频在线观看| 国产亚洲精品美女久久| 欧美一区日本一区韩国一区| 国产色视频一区二区三区qq号| 懂色av一区二区三区免费看| 成人app下载| 日本成人一区| 小小水蜜桃在线观看| 91在线观看喷潮| 天天操天天爽天天射| 亚洲国产美女精品久久久久∴| 无码人妻久久一区二区三区蜜桃| 37pao成人国产永久免费视频| 日韩一区二区三区四区视频| 欧美做爰猛烈大尺度视频| 亚洲三级电影在线观看| 黄页网站免费在线观看| 欧美日韩福利视频| 国产精品乱码久久久久久| 成年网站在线看| aiai在线| 国内视频在线精品| 日本性生活一级片| 国产精品变态另类虐交| 成人自拍视频在线观看| 久久不射热爱视频精品| 国产乱人伦精品一区二区三区| 美女国内精品自产拍在线播放| 91久久久久| 91超薄肉色丝袜交足高跟凉鞋| 中文字幕在线播放第一页| 视频在线国产| 亚洲午夜色婷婷在线| 欧美日韩精品在线观看| 老鸭窝一区二区久久精品| 在线国产一区二区三区| 亚洲av电影一区| 在线观看一区日韩| 精品日产乱码久久久久久仙踪林| 二人午夜免费观看在线视频| 66av国产| 成年人国产在线观看| 久久中文字幕一区二区| 一区二区三区波多野结衣在线观看| 凹凸日日摸日日碰夜夜爽1| 白浆在线视频| 一区二区三区高清在线视频| 极品美女扒开粉嫩小泬| 先锋影音国产一区| 色婷婷综合久久久中文一区二区| 91性高湖久久久久久久久_久久99| 波多野结衣一本| 国产一区 二区| 午夜激情在线观看| 五月综合激情网| 久久久久久中文字幕| 成人免费av电影| 日韩一级免费毛片| 精品捆绑美女sm三区| 电影在线高清| 尤物网在线观看| 先锋影音av中文字幕| 91偷拍一区二区三区精品| 国产日韩精品一区二区| 91av在线免费| 国产香蕉尹人视频在线| 免费不卡的av| 2019中文亚洲字幕| 久久国产柳州莫菁门| 中文字幕资源网在线观看| 一区二区中文字| 欧美美女直播网站| 日韩一级免费片| 日日噜噜夜夜狠狠| 免费久久久久久| 日本一区二区三区网站| 久久99精品久久久久久久久久| 中文字幕va一区二区三区| 日本一区二区在线视频观看| 五月天中文字幕| 欧美自拍资源在线| 国产高清一区二区三区四区| 伊人情人网综合| 精品视频一区二区三区在线观看| 麻豆一区二区三区四区精品蜜桃| 一区二区三区日本视频| 日本熟妇色xxxxx日本免费看|