电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

vue2+elementUI實現下拉樹形多選框效果實例

瀏覽:47日期:2022-06-13 13:32:54
目錄效果如圖所示:1.新建el-select-tree.vue組件2.頁面引入組件使用總結效果如圖所示:

1.新建el-select-tree.vue組件<!-- * 下拉樹形選擇--><template> <el-select ref='selectTree' :value='value' v-model='valueName' :multiple='multiple' :clearable='clearable'@clear='clearHandle' @change='changeValue'><el-option :value='valueName' class='options'> <el-tree ref='selectTree' :accordion='accordion' :data='options' :props='props':node-key='props.value' @node-click='handleNodeClick'><span slot-scope='{ data }'> <i :class='[data.color != null ? 'ification_col' : '']':style='{ 'background-color': data.color }'></i>&nbsp;&nbsp;{{ data.name }}</span> </el-tree></el-option> </el-select></template><script>export default { name: 'el-tree-select', props: {// 配置項props: { type: Object, default: () => {return { value: 'id', children: 'children', label: 'name'} }},// 選項列表數據(樹形結構的對象數組)options: { type: Array, default: () => {return [] }},// 初始值(單選)value: { type: Object, default: () => {return {} }},// 初始值(多選)valueMultiple: { type: Array, default: () => {return [] }},// 可清空選項clearable: { type: Boolean, default: true},// 自動收起accordion: { type: Boolean, default: false},// 是否多選multiple: { type: Boolean, default: false} }, data() {return { resultValue: [], // 傳給父組件的數組對象值 valueName: this.multiple ? [] : '' // 輸入框顯示值} }, watch: {value() { this.resultValue = this.multiple ? this.valueMultiple : this.value; // 初始值 this.initHandle()} }, mounted() {this.resultValue = this.multiple ? this.valueMultiple : this.value; // 初始值this.initHandle(); }, methods: {// 初始化顯示initHandle() { if (this.resultValue) {if (this.multiple) { // 多選 this.resultValue.forEach(item => this.valueName.push(item.name));} else { // 單選 this.valueName = this.resultValue.name;} } this.initScroll()},// 初始化滾動條initScroll() { this.$nextTick(() => {let scrollWrap = document.querySelectorAll('.el-scrollbar .el-select-dropdown__wrap')[0]let scrollBar = document.querySelectorAll('.el-scrollbar .el-scrollbar__bar')scrollWrap.style.cssText = 'margin: 0px; max-height: none; overflow: hidden;'scrollBar.forEach(ele => ele.style.width = 0) })},// 切換選項handleNodeClick(node) { // 設置點擊葉子節點后被選中 可以更改為點擊父節點也生效 if (node.children == null || node.children == undefined) {if (this.multiple) { // 多選(判重后添加) let num = 0; this.valueName.forEach(item => {item == node[this.props.label] ? num++ : num; }) if (num == 0) {this.valueName.push(node[this.props.label]); // 輸入框顯示值this.resultValue.push(node); }} else { // 單選 this.$refs.selectTree.blur(); this.valueName = node[this.props.label]; this.resultValue = node;}this.$emit('getValue', this.resultValue); }},// 從輸入框中直接刪除某個值時changeValue(val) { if (this.multiple) {// 多選(同時刪掉傳給父組件中多余的值,再傳給父組件)this.resultValue.map((item, index) => { let i = val.indexOf(item.name) if (i == -1) {this.resultValue.splice(index, 1) }})this.$emit('getValue', this.resultValue); } else {// 單選this.$emit('getValue', val); }},// 清除選中clearHandle() { this.valueName = this.multiple ? [] : '' this.resultValue = [] this.clearSelected() this.$emit('getValue', this.resultValue)},// 清空選中樣式clearSelected() { let allNode = document.querySelectorAll('#tree-option .el-tree-node') allNode.forEach((element) => element.classList.remove('is-current'))} }}</script><style scoped>.el-scrollbar .el-scrollbar__view .el-select-dropdown__item { height: auto; max-height: 300px; padding: 0; overflow: hidden; overflow-y: auto;}.el-select-dropdown__item.selected { font-weight: normal;}ul li>>>.el-tree .el-tree-node__content { height: auto; padding: 0 20px;}.el-tree-node__label { font-weight: normal;}.el-tree>>>.is-current .el-tree-node__label { color: #409EFF; font-weight: 700;}.el-tree>>>.is-current .el-tree-node__children .el-tree-node__label { color: #606266; font-weight: normal;}.el-popper { z-index: 9999;}.ification_col { width: 20px; height: 10px; display: inline-block;}</style>2.頁面引入組件使用<template> <div class='selectTree'> <label>請選擇:</label> <!-- 單選 + 默認值 --> <!-- <el-select-tree :options='options' :value='value' @getValue='getSelectedValue'></el-select-tree> --> <!-- 多選 + 默認值 --> <el-select-tree :options='options' :multiple='multiple' :valueMultiple='valueMultiple' @getValue='getSelectedValue'></el-select-tree> </div></template><script>import elSelectTree from '../components/el-select-tree.vue'export default { components: { elSelectTree }, data() { return { // 開啟/關 多選/單選 multiple: true, value: {id: 3,name: '張三' }, valueMultiple: [{ id: 3, name: '張三'}, { id: 4, name: '李四'} ], options: [{ id: 1, name: '一組', children: [{ id: 2, name: '第一隊', children: [{ id: 3, name: '小張' }, { id: 4, name: '小劉' }] }]},{ id: 5, name: '二組', children: [{ id: 6, name: '小馬' }, { id: 7, name: '小麗' }]},{ id: 8, name: '三組', children: [{ id: 9, name: '小韓' }, { id: 10, name: '小錢' }]} ] } }, created() { }, methods: { // 組件傳出來的選中結果 getSelectedValue(value) { console.log('選中的結果值', value) } }}</script><style lang='scss'></style>總結

到此這篇關于vue2+elementUI實現下拉樹形多選框效果的文章就介紹到這了,更多相關vue2+elementUI下拉樹形多選框內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
主站蜘蛛池模板: 湖南长沙商标注册专利申请,长沙公司注册代理记账首选美创! | 广州办公室设计,办公室装修,写字楼设计,办公室装修公司_德科 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 深圳办公室装修,办公楼/写字楼装修设计,一级资质 - ADD写艺 | 山东艾德实业有限公司| FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 电缆桥架生产厂家_槽式/梯式_热镀锌线槽_广东东莞雷正电气 | 塑钢课桌椅、学生课桌椅、课桌椅厂家-学仕教育设备首页 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 稳尚教育加盟-打造高考志愿填报平台_新高考志愿填报加盟_学业生涯规划加盟 | 应急灯_消防应急灯_应急照明灯_应急灯厂家-大成智慧官网 | 多功能干燥机,过滤洗涤干燥三合一设备-无锡市张华医药设备有限公司 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 葡萄酒灌装机-食用油灌装机-液体肥灌装设备厂家_青州惠联灌装机械 | 山东信蓝建设有限公司官网 | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 塑胶跑道施工-硅pu篮球场施工-塑胶网球场建造-丙烯酸球场材料厂家-奥茵 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 膜结构_ETFE膜结构_膜结构厂家_膜结构设计-深圳市烨兴智能空间技术有限公司 | 金蝶帐无忧|云代账软件|智能财税软件|会计代账公司专用软件 | 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 北京百度网站优化|北京网站建设公司-百谷网络科技 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 烟雾净化器-滤筒除尘器-防爆除尘器-除尘器厂家-东莞执信环保科技有限公司 | 标准品网_标准品信息网_【中检计量】 | 绿叶|绿叶投资|健康产业_绿叶投资集团有限公司 | 产业规划_产业园区规划-产业投资选址及规划招商托管一体化服务商-中机院产业园区规划网 |