<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了vue之ele多級聯元件的使用具體程式碼,供大家參考,具體內容如下
多級聯元件的使用
html
<el-cascader ref="cascader" :options="options" @focus="cascaderFocus" @change="cascaderChange" v-model="cascadeValue" :props="propsVal" popper-class="cascader" ></el-cascader>
js
data () { return { options : [ { value: "01", label: "科技", parentValue: "0", children: [ { value: "0101", label: "半導體", parentValue: "01", children: [ { value: "010101", label: "環", parentValue: "0101", }, ], }, { value: "0102", label: "半導體2", parentValue: "01", children: [ { value: "010201", label: "顯1", parentValue: "0102", }, ], }, { value: "0103", label: "產業", parentValue: "01" }, ], }, {value: "02", label: "業", parentValue: "0" }, // 沒有子集的時候 {value: "04", label: "類", parentValue: "0",children: [], } ], cascadeValue: [], //級聯選中的值 currentIndustry:[], propsVal: { checkStrictly: true, }, }; }, methods: { cascaderFocus(){ console.log("jiagouFocus"); }, cascaderChange(valArr){ console.log("jgTreeChange", valArr); this.currentIndustry = valArr }, } // 重置的時候 reset() { this.$refs.cascader.checkedValue = []; this.$refs.cascader.dropDownVisible = false; },
css
.cascader .el-scrollbar{ min-width: 120px!important; max-width: 100%; } .cascader .el-cascader-node{ padding: 0 18px 0 0; height: 30px; } .cascader.el-cascader-node .el-cascader-node__postfix{ right: 5px; } .cascader .el-cascader-node > .el-radio{ margin-left: 7px; }
vue 之ele多級聯元件 新增額外的按鈕
需求:
HTML
目的:點選級聯的時候,只是在點選第二層的時候,獲取到第一層集團的選中的值!
<div class="top_pane_select"> <div class="group_name" v-if="showGroupName" >{{ groupName }} / 全部</div> <el-cascader ref="cascader" v-model="cascadeValue" :props="propsVal" @change="selectChange" @expand-change="expandChange" ></el-cascader> </div>
js
data() { return { propsVal: { // 點選的時候 觸發 expandTrigger: "click", // 完整路徑 emitPath: true, // 動態載入 lazy: true, // 動態載入的時候 觸發渲染dom節點 lazyLoad: (node, resolve) => { this.selectLazyLoad(node, resolve); }, }, currentIndustry: [], // 當前產業 groupName:"",// 當選中為 集團 + 第二級 全部的時候 顯示再級聯選單 firstHomeGroup:[], // 集團的資料 showGroupName:false, jtCode:"", // 當前集團選中的code cascadeValue: [], //級聯選中的值 } } watch: { // 級聯選中的值 判斷:當選中的值 為空陣列(也就是查詢所以集團的資料時候),呼叫級聯的重置方法! cascadeValue(newV) { if (newV.length === 0) { this.selectReset(); }else{ this.groupName = ""; } }, // 當前選中的產業 傳遞到子元件的資料 currentIndustry(newV){ this.currentIndustry = newV; if(newV.length == 0){ this.groupName = ""; this.showGroupName = false; } } }, methods: { // 建立dom節點 和 刪除 dom節點 createDom(dom){ let li = document.createElement("li") li.innerHTML = "全部"; dom.insertBefore(li, dom.children[0]) dom.children[0].style.paddingLeft = "10px"; dom.children[0].style.cursor = "pointer"; }, destroyedDom(dom){ dom.removeChild(dom.children[0]) }, // 級聯選擇器 動態載入資料 selectLazyLoad(node, resolve) { const { level } = node; if (level == 0) { // 請求集團的資料 getHomeGroup().then(({ data }) => { this.firstHomeGroup = data.dat; this.renderNode(data, level, resolve); }); } else if (level == 1) { // 請求板塊的資料 let groupNo = node.data ? node.data.value : null; // 拿到選中的第一級的value getHomePlate(groupNo).then(({ data }) => { this.renderNode(data, level, resolve); }); } else if (level == 2) { // 請求產業的資料 let palteNo = node.data ? node.data.value : null; // 拿到選中的第二級的value getHomeIndustry(palteNo).then(({ data }) => { this.renderNode(data, level, resolve); }); } }, // 渲染dom節點 就是拿到後臺請求的資料的時候,渲染dom節點 renderNode(data, level, resolve) { if (data.code == 0 && data.dat.length > 0) { let nodes = data.dat.map((item) => { return { value: item.code, label: item.name, leaf: level >= 2, }; }); resolve(nodes); if( level === 0){ this.$nextTick(() => { let dom = document.querySelector(".el-cascader-panel > .el-scrollbar:nth-child(1) .el-scrollbar__view") this.createDom(dom); dom.children[0].onclick = () => { this.jtCode = ""; this.cascadeValue = []; this.currentIndustry = []; this.selectChange([]); this.$refs.cascader.dropDownVisible = false; this.selectReset(); } }) } } }, // 級聯展開 只為建立最新的dom節點 expandChange(item){ // console.log('展開item',item); if(item.length === 1){ this.$nextTick(() => { let dom = document.querySelector(".el-cascader-panel > .el-scrollbar:nth-child(2) .el-scrollbar__view"); if(dom.children[0].innerText == "全部"){ this.destroyedDom(dom); this.createDom(dom); this.groupClick(item); }else{ this.createDom(dom); this.groupClick(item); } }) } }, // 點選 集團的時候 建立 全部 按鈕 groupClick(item){ this.$nextTick(() => { let dom = document.querySelector(".el-cascader-panel > .el-scrollbar:nth-child(2) .el-scrollbar__view"); if(dom.children[0]){ dom.children[0].onclick = () => { this.jtCode = item[0]; this.currentIndustry = [this.jtCode, ""]; // this.selectChange(this.currentIndustry); this.firstHomeGroup.forEach(item => { if(item.code == this.jtCode){ this.groupName = item.name; this.showGroupName = true; } }) this.selectReset(); this.$refs.cascader.dropDownVisible = false; } } }) }, // 級聯選中的時候 對資料的判斷! selectChange(item) { // console.log("級聯選中item", item,item.length); // this.currentIndustry = item[item.length - 1]; if(item.length == 3){ this.currentIndustry = item; this.showGroupName = false; this.groupName = ""; } else { if(this.jtCode){ this.currentIndustry = [this.jtCode,""]; }else{ this.currentIndustry = []; } } }, // 級聯下拉式選單 重置 selectReset() { const _cascader = this.$refs.cascader; if (_cascader) { _cascader.$refs.panel.checkedValue = []; _cascader.$refs.panel.activePath = []; _cascader.$refs.panel.syncActivePath(); } let dom = document.querySelector(".el-cascader-panel > .el-scrollbar:nth-child(2) .el-scrollbar__view"); if(dom){ if(dom.children[0].innerText == "全部" && dom.children[0]){ dom.removeChild(dom.children[0]) } } }, },
CSS
.top_pane_select { position: relative; margin-top: 2px; margin-left: 115px; width: 240px; height: 24px; border: 1px solid #e82323; border-radius: 2px; overflow: hidden; ::v-deep .el-cascader { top: -8px !important; width: 240px!important; .el-input__inner { color: #e82323; border: none !important; } } // 單獨選中 集團的時候 顯示 .group_name{ background: #fff; z-index: 10; position: absolute; top: 2px; left: 15px; width: 40%; height: 22px; line-height: 22px; color: #e82323; } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45