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

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

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

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

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

點(diǎn)擊父標(biāo)題欄可以打開(kāi)與折疊子列表
點(diǎn)擊父標(biāo)題欄的勾選圖標(biāo)可以全選或取消子列表
點(diǎn)擊子列表的勾選圖標(biāo)達(dá)到全選時(shí),父標(biāo)題欄的勾選圖標(biāo)自動(dòng)勾選;反之,沒(méi)達(dá)到全選時(shí),父標(biāo)題欄的勾選圖標(biāo)自動(dòng)取消勾選
當(dāng)所有父標(biāo)題欄的勾選圖標(biāo)達(dá)到全選時(shí),最底下那個(gè)全選框自動(dòng)勾選;反之,沒(méi)達(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)過(guò)程是:

構(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)
子列表通過(guò)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里,通過(guò)綁定: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)變化的目的。
通過(guò)@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)中沒(méi)選中的全部選中,即將它們?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實(shí)現(xiàn)牌面翻轉(zhuǎn)效果

    Vue實(shí)現(xiàn)牌面翻轉(zhuǎn)效果

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)牌面翻轉(zhuǎn)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • vue3使用threejs實(shí)現(xiàn)3D卡片水平旋轉(zhuǎn)效果的示例代碼

    vue3使用threejs實(shí)現(xiàn)3D卡片水平旋轉(zhuǎn)效果的示例代碼

    這篇文章主要介紹了在vue3中使用threejs實(shí)現(xiàn)3D卡片水平旋轉(zhuǎn)效果,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • vue+axios?methods方法return取不到值問(wèn)題及解決

    vue+axios?methods方法return取不到值問(wèn)題及解決

    這篇文章主要介紹了vue+axios?methods方法return取不到值問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 如何通過(guò)點(diǎn)擊按鈕切換顯示不同echarts圖表

    如何通過(guò)點(diǎn)擊按鈕切換顯示不同echarts圖表

    這篇文章主要介紹了如何通過(guò)點(diǎn)擊按鈕切換顯示不同echarts圖表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • elementui?el-table底層背景色修改簡(jiǎn)單方法

    elementui?el-table底層背景色修改簡(jiǎn)單方法

    最近在做項(xiàng)目的時(shí)候遇到個(gè)需求,需要修改el-table背景色,這里給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于elementui?el-table底層背景色修改的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • Vue 頁(yè)面監(jiān)聽(tīng)用戶預(yù)覽時(shí)間功能的實(shí)現(xiàn)代碼

    Vue 頁(yè)面監(jiān)聽(tīng)用戶預(yù)覽時(shí)間功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Vue 頁(yè)面如何監(jiān)聽(tīng)用戶預(yù)覽時(shí)間,首先需要借助vue頁(yè)面的生命周期函數(shù)mounted和destroyed,分別加入開(kāi)始計(jì)時(shí)和清除計(jì)時(shí)的邏輯,通過(guò)相關(guān)操作實(shí)現(xiàn)此功能,需要的朋友可以參考下
    2021-07-07
  • vue實(shí)現(xiàn)計(jì)數(shù)器簡(jiǎn)單制作

    vue實(shí)現(xiàn)計(jì)數(shù)器簡(jiǎn)單制作

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)計(jì)數(shù)器簡(jiǎn)單制作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue.Draggable實(shí)現(xiàn)交換位置

    Vue.Draggable實(shí)現(xiàn)交換位置

    這篇文章主要為大家詳細(xì)介紹了Vue.Draggable實(shí)現(xiàn)交換位置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue element ui使用選擇器實(shí)現(xiàn)地區(qū)選擇兩種方法

    vue element ui使用選擇器實(shí)現(xiàn)地區(qū)選擇兩種方法

    這篇文章主要給大家介紹了關(guān)于vue element ui使用選擇器實(shí)現(xiàn)地區(qū)選擇的兩種方法,Element UI是一套基于Vue.js開(kāi)發(fā)的UI組件庫(kù),其中包含了地區(qū)選擇器(Cascader)組件,需要的朋友可以參考下
    2023-09-09
  • 前端框架Vue父子組件數(shù)據(jù)雙向綁定的實(shí)現(xiàn)

    前端框架Vue父子組件數(shù)據(jù)雙向綁定的實(shí)現(xiàn)

    Vue項(xiàng)目中經(jīng)常使用到組件之間的數(shù)值傳遞,實(shí)現(xiàn)的方法很多,但是原理上基本大同小異。這篇文章將給大家介紹Vue 父子組件數(shù)據(jù)單向綁定與Vue 父子組件數(shù)據(jù)雙向綁定的對(duì)比從而認(rèn)識(shí)雙向綁定
    2021-09-09

最新評(píng)論

昌吉市| 木里| 沈阳市| 抚顺县| 海口市| 灵台县| 涟源市| 宝坻区| 梁平县| 枣阳市| 铁力市| 南京市| 昌图县| 都江堰市| 定州市| 合作市| 林州市| 太原市| 油尖旺区| 松滋市| 卢龙县| 普宁市| 砀山县| 彭山县| 济阳县| 原平市| 青浦区| 谷城县| 二连浩特市| 葫芦岛市| 绥阳县| 克什克腾旗| 同德县| 额尔古纳市| 赤水市| 宜宾市| 林周县| 彭阳县| 伊宁县| 望谟县| 格尔木市|