Vue多選列表組件深入詳解
多選列表 (Multi-Select) 是一種將所有選項(xiàng)列出,并允許用戶(hù)利用 Ctrl/Shift 鍵進(jìn)行多選的 UI 元素。這是一種常見(jiàn)的設(shè)計(jì)元素。有時(shí)候?yàn)榱斯?jié)省空間,我們會(huì)將選項(xiàng)折疊于 Combo Box 中。為了方便用戶(hù)操作,這個(gè)組件還將添加 Select All 和 Clear All 兩個(gè)按鈕,允許用戶(hù)快速選擇或清除選擇。這個(gè) UI 元素曾被運(yùn)用于 Correlation Plot App 中。
注冊(cè)組件
注冊(cè) Multi-Select 組件,簡(jiǎn)單來(lái)說(shuō)就是復(fù)制粘貼已封裝好的代碼部分。此處建議注冊(cè)全局組件。
設(shè)計(jì)該元素的時(shí)候考慮了兩種模式:第一種是每次點(diǎn)擊新選項(xiàng)將保留舊選項(xiàng)并添加新選項(xiàng),如上述示例圖形。這種是較為常見(jiàn)的一種方式。第二種是每次點(diǎn)擊新選項(xiàng)則清除舊選項(xiàng)僅保留新選項(xiàng)。若使用這種方式進(jìn)行多選,則需要利用Ctrl/Shift鍵。這種設(shè)計(jì)能便于用戶(hù)在每一次的點(diǎn)擊中消除舊選項(xiàng)。若使用第二方式,需要替換事件@click.exact="AddToOrDeleteFromSelectedColumns"
為 @click.exact="ClickOnColumnListItem"
<script type="text/x-template" id="multi-select-template"> … <tr v-for = "(item,index) in columns" @click.exact="AddToOrDeleteFromSelectedColumns" @click.shift.exact="AddMultipleToSelectedColumns" @click.ctrl.exact="AddToOrDeleteFromSelectedColumns" :title="function(item){if(item.longname){return 'Short Name: ' + item.name + '\n----------------\n' + item.longname}else{return item.name}}(item)" class="column-list-entry"> ... </tr> </script> <script> Vue.component("multi-select", { template: "#multi-select-template", … </script>
調(diào)用組件
直接添加自定義標(biāo)簽
<multi-select :legend_name="legend_name" :columns="columns" :selected_columns="selected_columns" @update_selected_columns="onSelectedColumnsChange"> </multi-select>
傳遞數(shù)據(jù)
最后還需要對(duì)組件傳遞數(shù)據(jù)。我們可以利用 v-bind 動(dòng)態(tài)綁定數(shù)據(jù)到父級(jí)組件的數(shù)據(jù)中。
props 中 legend_name 綁定 Multi-Select 的所需顯示的名稱(chēng),columns 綁定 Multi-Select 的選項(xiàng), selected_columns 綁定當(dāng)前的已選項(xiàng)。另外我們還需要在父級(jí)實(shí)例中定義事件 “onSelectedColumnsChange”,用于刷新 Multi-Select 組件的顯示。
data: function(){ return { legend_name: "Input Columns", columns: [ {"name":"A","longname":"Copper"}, {"name":"B","longname":"Aluminum Aluminum"}, {"name":"C","longname":"Calcium"}, {"name":"D","longname":"Calcium"}, ], selected_columns: [], } }, ... methods:{ onSelectedColumnsChange:function(new_columns) { this.selected_columns = new_columns; }, }, ...
到此這篇關(guān)于Vue多選列表組件深入詳解的文章就介紹到這了,更多相關(guān)Vue多選列表組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中用qrcode庫(kù)將超鏈接生成二維碼圖片的示例代碼
生成二維碼是一種常見(jiàn)的需求,無(wú)論是用于商業(yè)宣傳還是個(gè)人分享,二維碼都可以提供快速方便的方式來(lái)傳遞信息,在Vue框架中,我們可以使用qrcode庫(kù)來(lái)輕松地生成二維碼,本篇博文將介紹如何安裝qrcode庫(kù),并通過(guò)一個(gè)實(shí)際例子來(lái)展示如何生成二維碼,需要的朋友可以參考下2023-12-12VUE 實(shí)現(xiàn)動(dòng)態(tài)給對(duì)象增加屬性,并觸發(fā)視圖更新操作示例
這篇文章主要介紹了VUE 實(shí)現(xiàn)動(dòng)態(tài)給對(duì)象增加屬性,并觸發(fā)視圖更新操作,涉及vue.js對(duì)象屬性動(dòng)態(tài)操作及視圖更新相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-11-11mockjs+vue頁(yè)面直接展示數(shù)據(jù)的方法
這篇文章主要介紹了mockjs+vue頁(yè)面直接展示數(shù)據(jù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12vue 實(shí)現(xiàn)根據(jù)data中的屬性值來(lái)設(shè)置不同的樣式
這篇文章主要介紹了vue 實(shí)現(xiàn)根據(jù)data中的屬性值來(lái)設(shè)置不同的樣式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08Fragment 占位組件不生成標(biāo)簽與路由組件lazyLoad案例
這篇文章主要為大家介紹了Fragment 占位組件不生成標(biāo)簽與路由組件lazyLoad案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10elementui實(shí)現(xiàn)表格自定義排序的示例代碼
本文主要介紹了elementui實(shí)現(xiàn)表格自定義排序的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07element-ui中導(dǎo)航組件menu的一個(gè)屬性:default-active說(shuō)明
這篇文章主要介紹了element-ui中導(dǎo)航組件menu的一個(gè)屬性:default-active說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05Vue?export?default中的name屬性有哪些作用
這篇文章主要介紹了Vue?export?default中的name屬性有哪些作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03