欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue多級(jí)多選菜單組件開發(fā)

 更新時(shí)間:2020年09月08日 13:42:04   作者:余小弟  
這篇文章主要為大家分享了vue多級(jí)多選菜單組件開發(fā)案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了vue多級(jí)多選菜單組件的制作方法,供大家參考,具體內(nèi)容如下

要開發(fā)一個(gè)這樣的多級(jí)多選菜單組件,功能是:

點(diǎn)擊父標(biāo)題欄可以打開與折疊子列表
點(diǎn)擊父標(biāo)題欄的勾選圖標(biāo)可以全選或取消子列表
點(diǎn)擊子列表的勾選圖標(biāo)達(dá)到全選時(shí),父標(biāo)題欄的勾選圖標(biāo)自動(dòng)勾選;反之,沒達(dá)到全選時(shí),父標(biāo)題欄的勾選圖標(biāo)自動(dòng)取消勾選
當(dāng)所有父標(biāo)題欄的勾選圖標(biāo)達(dá)到全選時(shí),最底下那個(gè)全選框自動(dòng)勾選;反之,沒達(dá)到全選時(shí),最底下那個(gè)全選框自動(dòng)取消勾選
點(diǎn)擊最底下那個(gè)全選框可以全選或取消全部的勾選圖標(biāo)

所以總結(jié)起來(lái)我們重點(diǎn)要利用子列表勾選了哪些項(xiàng)來(lái)計(jì)算出父標(biāo)題與底下的全選框是自動(dòng)勾選還是自動(dòng)取消,并且父標(biāo)題與底下的全選框在選擇變化時(shí)子列表應(yīng)有什么變化。要做到以上,實(shí)現(xiàn)過程是:

構(gòu)建我們model層數(shù)據(jù)

datas : [
 {
 //用于判斷是否展示子列表
 isShowListItem : false,
 //用于記錄選中了哪些子項(xiàng)
 selected : [],
 //父標(biāo)題
 listTitle : "保利南悅灣",
 //子列表
 listItem : [
 {
 id : 1,
 name : "李小龍"
 },
 {
 id : 2,
 name : "周星馳"
 },
 {
 id : 3,
 name : "周杰倫"
 }
 ]
 },
 {
 isShowListItem : false,
 selected : [],
 listTitle : "南莊萬(wàn)科城",
 listItem : [
 {
 id : 4,
 name : "大魔王"
 },
 {
 id : 5,
 name : "老妖怪"
 }
 ]
 }
]

記錄子列表勾選了哪些項(xiàng)
子列表通過v-model=”data.selected”去雙向綁定到selected數(shù)組中,當(dāng)子列表項(xiàng)的checked發(fā)生變化時(shí),就會(huì)把當(dāng)前項(xiàng)的id記錄到selected數(shù)組里去

<input 
type="checkbox"
:value="item.id"
v-model="data.selected"
>

當(dāng)父標(biāo)題勾選變化時(shí)的處理方法
自動(dòng)處理父標(biāo)題勾選圖標(biāo)的變化
在HTML里,通過綁定:checked=”isTitleChecked(data)”,這時(shí),每當(dāng)其他項(xiàng)變化時(shí),父標(biāo)題都會(huì)調(diào)用一下isTitleChecked這個(gè)方法去判斷一下這時(shí)自己的checked狀態(tài)是true還是false,從而達(dá)到根據(jù)子項(xiàng)選中數(shù)目不同,父標(biāo)題自動(dòng)變化的目的。
通過@change=”changeTitleChecked(data,$event)”,每當(dāng)父標(biāo)題主動(dòng)勾選或取消時(shí)觸發(fā)
父標(biāo)題HTML

<input :id="data.listTitle"
 class="list-input"
 type="checkbox"
 :checked="isTitleChecked(data)"
 @change="changeTitleChecked(data,$event)"
>

父標(biāo)題JS

changeTitleChecked方法:當(dāng)主動(dòng)觸發(fā)父標(biāo)題的勾選圖標(biāo)時(shí),如果這次觸發(fā)chaeked的狀態(tài)是true,則要把子列表項(xiàng)中沒選中的全部選中,即將它們?nèi)考舆M(jìn)selected數(shù)組中;如果是false,則要把子列表項(xiàng)全部取消選中,即清空selected數(shù)組。
isTitleChecked方法:當(dāng)子列表項(xiàng)全部選中時(shí)自動(dòng)勾選父標(biāo)題。

/**
* 當(dāng)父標(biāo)題狀態(tài)變化時(shí)的處理方法
* @param data [當(dāng)前項(xiàng)的data]
* @param event [當(dāng)前項(xiàng)的event]
*/
changeTitleChecked : function (data,event) {
 if (event.target.checked === true) {
 data.listItem.forEach(function (item) {
 data.selected.indexOf(item.id) === -1 && data.selected.push(item.id);
 })
 }else {
 data.selected = [];
 }
}

/**
* 判斷父標(biāo)題選擇狀態(tài)
* @param data [當(dāng)前項(xiàng)的data]
* @returns {boolean}
*/
isTitleChecked : function (data) {
 var _selected = data.selected;
 var _listItem = data.listItem;
 // 驗(yàn)證selected中是否含有全部的item的id 如果是 證明title要選中
 return _listItem.every(function (item) {
 return _selected.indexOf(item.id) != -1;
 });
}

當(dāng)?shù)紫碌娜x框變化時(shí)的處理方法
自動(dòng)處理底下的全選框的變化

全選框HTML:

<input id="all-checked"
 type="checkbox"
 :checked="isAllChecked()"
 @change="changeAllChecked($event)"
>

全選框JS:

changeAllChecked方法:當(dāng)主動(dòng)觸發(fā)全選框時(shí),如果checked為true,則將全部的子項(xiàng)都放進(jìn)selected數(shù)組里;反之則清空全部selected數(shù)組。
isAllChecked 方法:判斷selected數(shù)組的長(zhǎng)度是否等于全部子項(xiàng)數(shù),如果相等,則全選框checked狀態(tài)設(shè)為true。

/**
* 全選框change事件的回調(diào)處理方法
* @param event 
*/
changeAllChecked : function (event) {
 if (event.target.checked === true) {
 this.datas.forEach(function (data) {
 data.listItem.forEach(function (item) {
 data.selected.indexOf(item.id) === -1 && data.selected.push(item.id);
 })
 })
}else {
 this.datas.forEach(function (data) {
 data.selected = [];
 })
 }
}

/**
* 判斷全選框選擇狀態(tài)
* @returns {boolean}
*/
isAllChecked : function () {
 return this.datas.every(function (data) {
 return data.selected.length === data.listItem.length;
 });
}

本文已被整理到了《Vue.js前端組件學(xué)習(xí)教程》,歡迎大家學(xué)習(xí)閱讀。

關(guān)于vue.js組件的教程,請(qǐng)大家點(diǎn)擊專題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。

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

相關(guān)文章

  • vue點(diǎn)擊Dashboard不同內(nèi)容 跳轉(zhuǎn)到同一表格的實(shí)例

    vue點(diǎn)擊Dashboard不同內(nèi)容 跳轉(zhuǎn)到同一表格的實(shí)例

    這篇文章主要介紹了vue點(diǎn)擊Dashboard不同內(nèi)容 跳轉(zhuǎn)到同一表格的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-11-11
  • vue-quill-editor二次封裝,實(shí)現(xiàn)自定義文件上傳方式

    vue-quill-editor二次封裝,實(shí)現(xiàn)自定義文件上傳方式

    這篇文章主要介紹了vue-quill-editor二次封裝,實(shí)現(xiàn)自定義文件上傳方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue?@tap事件之$event用法介紹

    vue?@tap事件之$event用法介紹

    這篇文章主要介紹了vue?@tap事件之$event用法介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue開發(fā)項(xiàng)目中如何使用Font Awesome 5

    Vue開發(fā)項(xiàng)目中如何使用Font Awesome 5

    Font Awesome是一套流行的圖標(biāo)字體庫(kù),我們?cè)趯?shí)際開發(fā)的過程中會(huì)經(jīng)常遇到需要使用圖標(biāo)的場(chǎng)景,對(duì)于一些常用的圖標(biāo),我們可以直接在Font Awesome中找到并且使用,這篇文章主要給大家介紹了關(guān)于Vue開發(fā)項(xiàng)目中如何使用Font Awesome5的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • vue-cli 3.x 修改dist路徑的方法

    vue-cli 3.x 修改dist路徑的方法

    今天小編就為大家分享一篇vue-cli 3.x 修改dist路徑的方法,具有很好的參考價(jià)值。希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-09-09
  • vue項(xiàng)目中請(qǐng)求數(shù)據(jù)特別多導(dǎo)致頁(yè)面卡死的解決

    vue項(xiàng)目中請(qǐng)求數(shù)據(jù)特別多導(dǎo)致頁(yè)面卡死的解決

    這篇文章主要介紹了vue項(xiàng)目中請(qǐng)求數(shù)據(jù)特別多導(dǎo)致頁(yè)面卡死的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 解決Vue運(yùn)算符報(bào)錯(cuò):Syntax Error: Unexpected token問題

    解決Vue運(yùn)算符報(bào)錯(cuò):Syntax Error: Unexpected token問題

    這篇文章主要介紹了解決Vue運(yùn)算符報(bào)錯(cuò):Syntax Error: Unexpected token問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Vue父子傳遞實(shí)例講解

    Vue父子傳遞實(shí)例講解

    在本篇文章里小編給大家整理的是關(guān)于Vue父子傳遞實(shí)例講解,需要的朋友們可以跟著學(xué)習(xí)參考下。
    2020-02-02
  • Vue實(shí)現(xiàn)帶進(jìn)度條的文件拖動(dòng)上傳功能

    Vue實(shí)現(xiàn)帶進(jìn)度條的文件拖動(dòng)上傳功能

    這篇文章主要介紹了Vue實(shí)現(xiàn)帶進(jìn)度條的文件拖動(dòng)上傳功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 多個(gè)Vue項(xiàng)目部署到服務(wù)器的步驟記錄

    多個(gè)Vue項(xiàng)目部署到服務(wù)器的步驟記錄

    這篇文章主要給大家介紹了關(guān)于多個(gè)Vue項(xiàng)目部署到服務(wù)器的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論