vue實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)動(dòng)態(tài)菜單
本文實(shí)例為大家分享了vue實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)動(dòng)態(tài)菜單的具體代碼,供大家參考,具體內(nèi)容如下
三級(jí)聯(lián)動(dòng)動(dòng)態(tài)菜單展示:一級(jí)菜單選中,生成二級(jí)菜單數(shù)據(jù),二級(jí)菜單選中,生成三級(jí)菜單數(shù)據(jù)(根據(jù)上一級(jí)菜單的id,作為請(qǐng)求下一級(jí)菜單數(shù)據(jù)接口的參數(shù))
1、代碼
<template> ? <div> ? ? <!-- inline:代表的是行內(nèi)表單,代表一行可以放置多個(gè)表單元素 --> ? ? <el-form :inline="true" class="demo-form-inline" :model="cForm"> ? ? ? <el-form-item label="一級(jí)分類(lèi)"> ? ? ? ? <el-select placeholder="請(qǐng)選擇" v-model="cForm.Category1Id" @change="handler1"> ? ? ? ? ? <!-- select框v-model收集的是value值,不是label,拿到一級(jí)分類(lèi)的value值,用來(lái)獲取二級(jí)分類(lèi)的數(shù)據(jù) --> ? ? ? ? ? <el-option :label="c1.name" :value="c1.id" v-for="c1 in list1" :key="c1.id"></el-option> ? ? ? ? </el-select> ? ? ? </el-form-item> ? ? ? <el-form-item label="二級(jí)分類(lèi)"> ? ? ? ? <el-select placeholder="請(qǐng)選擇" v-model="cForm.Category2Id" @change="handler2"> ? ? ? ? ? <el-option :label="c2.name" :value="c2.id" v-for="c2 in list2" :key="c2.id"></el-option> ? ? ? ? </el-select> ? ? ? </el-form-item> ? ? ? <el-form-item label="三級(jí)分類(lèi)"> ? ? ? ? <el-select placeholder="請(qǐng)選擇" v-model="cForm.Category3Id"> ? ? ? ? ? <el-option :label="c3.name" :value="c3.id" v-for="c3 in list3" :key="c3.id"></el-option> ? ? ? ? </el-select> ? ? ? </el-form-item> ? ? </el-form> ? </div> </template> ? <script> export default { ? name: "CategorySelect", ? data() { ? ? return { ? ? ? list1: [], //一級(jí)分類(lèi)數(shù)據(jù) ? ? ? list2: [], //二級(jí)分類(lèi)數(shù)據(jù) ? ? ? list3: [], //三級(jí)分類(lèi)數(shù)據(jù) ? ? ? cForm: { ? ? ? ? //收集相應(yīng)的一級(jí)二級(jí)分類(lèi)的id ? ? ? ? Category1Id: "", ? ? ? ? Category2Id: "", ? ? ? ? Category3Id: "", ? ? ? }, ? ? }; ? }, ? ? // 組件掛載完畢,向服務(wù)器發(fā)請(qǐng)求,獲取相應(yīng)的一級(jí)分類(lèi)的數(shù)據(jù) ? mounted() { ? ? // 獲取一級(jí)分類(lèi)的數(shù)據(jù)的方法 ? ? this.getCategory1List(); ? }, ? methods: { ? ? // 獲取一級(jí)分類(lèi)的數(shù)據(jù)的方法 ? ? async getCategory1List() { ? ? ? let result1List = await this.$API.attr.reqCategory1List(); ? ? ? if (result1List.code == 200) this.list1 = result1List.data; ? ? }, ? ? async handler1() { ? ? ? // 一級(jí)分類(lèi)的select事件的回調(diào)(當(dāng)一級(jí)分類(lèi)的option發(fā)生變化時(shí)拿到對(duì)應(yīng)二級(jí)分類(lèi)的數(shù)據(jù) ? ? ? //清除數(shù)據(jù) ? ? ? this.list2 = []; ? ? ? this.list3 = []; ? ? ? this.cForm.Category2Id = ""; ? ? ? this.cForm.Category3Id = ""; ? ? ? let result2List = await this.$API.attr.reqCategory2List( ? ? ? ? this.cForm.Category1Id ? ? ? ); ? ? ? if (result2List.code == 200) { ? ? ? ? this.list2 = result2List.data; ? ? ? } ? ? }, ? ? async handler2() { ? ? ? // 二級(jí)分類(lèi)的事件回調(diào)(當(dāng)二級(jí)分類(lèi)的option發(fā)生變化時(shí)拿到對(duì)應(yīng)三級(jí)分類(lèi)的數(shù)據(jù) ? ? ? // ? 清除三級(jí)分類(lèi)的數(shù)據(jù) ? ? ? this.list3 = []; ? ? ? this.cForm.Category3Id = ""; ? ? ? let result3List = await this.$API.attr.reqCategory3List( ? ? ? ? this.cForm.Category2Id ? ? ? ); ? ? ? if (result3List.code == 200) { ? ? ? ? this.list3 = result3List.data; ? ? ? } ? ? }, ? }, }; </script> ? <style> </style>
2、效果
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue3實(shí)現(xiàn)動(dòng)態(tài)路由及菜單
- vue3實(shí)現(xiàn)動(dòng)態(tài)側(cè)邊菜單欄的幾種方式簡(jiǎn)單總結(jié)
- Vue如何根據(jù)角色獲取菜單動(dòng)態(tài)添加路由
- vue3+element-plus動(dòng)態(tài)路由菜單示例代碼
- Vue3+Element?Plus實(shí)現(xiàn)動(dòng)態(tài)標(biāo)簽頁(yè)以及右鍵菜單功能
- 詳解Vue3如何加載動(dòng)態(tài)菜單
- vue后臺(tái)管理如何配置動(dòng)態(tài)路由菜單
- vue如何從后臺(tái)獲取數(shù)據(jù)生成動(dòng)態(tài)菜單列表
- Vue中實(shí)現(xiàn)動(dòng)態(tài)右鍵菜單的示例代碼
相關(guān)文章
使用 Vue 綁定單個(gè)或多個(gè) Class 名的實(shí)例代碼
這篇文章主要介紹了使用 Vue 綁定單個(gè)或多個(gè) Class 名的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-01-01Vue表格首列相同數(shù)據(jù)合并實(shí)現(xiàn)方法
這篇文章主要介紹了Vue實(shí)現(xiàn)表格首列相同數(shù)據(jù)合并的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04vue實(shí)現(xiàn)圖書(shū)管理demo詳解
這篇文章主要介紹了vue實(shí)現(xiàn)圖書(shū)管理,分享了圖書(shū)管理demo用的知識(shí)點(diǎn),以及遇到問(wèn)題的總結(jié),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10在vue中nextTick用法及nextTick 的原理是什么
這篇文章主要介紹了在vue中nextTick用法及nextTick 的原理是什么,Vue.js 是一個(gè)流行的前端框架,它提供了一種響應(yīng)式的數(shù)據(jù)綁定機(jī)制,使得頁(yè)面的數(shù)據(jù)與頁(yè)面的 UI 組件之間能夠自動(dòng)同步,需要的朋友可以參考下2023-04-04vue 解決uglifyjs-webpack-plugin打包出現(xiàn)報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了vue 解決uglifyjs-webpack-plugin打包出現(xiàn)報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08vue中使用element ui的input框?qū)崿F(xiàn)模糊搜索的輸入框
這篇文章主要介紹了vue中使用element ui的input框?qū)崿F(xiàn)模糊搜索的輸入框,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11Vue?Echarts實(shí)現(xiàn)實(shí)時(shí)大屏動(dòng)態(tài)數(shù)據(jù)顯示
同大多數(shù)的前端框架一樣,先讀官網(wǎng)的使用方法。學(xué)會(huì)基本使用后,在實(shí)例中找到自己想要demo。拿過(guò)來(lái)改一改,一個(gè)echarts圖表就形成,畢竟人家做就是為了方便使用,這篇文章主要介紹了Vue?Echarts實(shí)現(xiàn)實(shí)時(shí)大屏動(dòng)態(tài)數(shù)據(jù)顯示2022-10-10Ant Design Vue pro 動(dòng)態(tài)路由的實(shí)現(xiàn)和打包方式
這篇文章主要介紹了Ant Design Vue pro 動(dòng)態(tài)路由的實(shí)現(xiàn)和打包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06