今天记录组件的代码和一个调用它的父组件的代码,接口接收数据直接传element直接能用的,也就是经过上一章函数处理过的数据以下是代码

父组件

<template>
<commonfiltertree :placeholder="placeholder"
:data="data"
:showCheckbox="showCheckbox"
@check='getcheckdata'
:title="title"
:showScreen="showScreen"
@click='getCurrentKey'
@checkkey='getCheckedKeys'
:defaultExpandAll="defaultExpandAll"
:default='defaults'></commonfiltertree>
</template>
<script>
import commonfiltertree from "@/components/newCommon/tree/filtertree.vue";
export default {
components: {
commonfiltertree
},
data() {
return {
placeholder: '输入信息,按回车搜索',
showCheckbox: true,
data: [{
id: 1,
label: '一级 1',
children: [{
id: 4,
label: '二级 1-1',
children: [{
id: 9,
label: '三级 1-1-1'
}, {
id: 10,
label: '三级 1-1-2'
}]
}]
}, {
id: 2,
label: '一级 2',
children: [{
id: 5,
label: '二级 2-1'
}, {
id: 6,
label: '二级 2-2'
}]
}, {
id: 3,
label: '一级 3',
children: [{
id: 7,
label: '二级 3-1'
}, {
id: 8,
label: '二级 3-2'
}]
}],
countent: "",
defaultProps: {
children: "children",
label: "label"
},
data1: new Array,
data2: "",
title: "水费电费水电费",
showScreen: true,
defaults: [],
defaultExpandAll:true };
},
methods: {
getcheckdata(data) {
//有多选框的时候返回的data数组
this.data1 = data;
},
getCurrentKey(data) {
//点击的时候返回当前点击的key
this.data2 = data;
},
getCheckedKeys(data) {
//有多选框时返回的key所组成的数组
this.data3 = data;
}
}
};
</script>

子组件

/*
* @property { data : {Array} 接口传来的数组 }
* @property { showCheckbox : {Boolean} 是否显示多选小方框 }
* @property { placeholder : {String} 提示语,上方搜索框提示语。 }
* @property { check : 父组件使用check来接收已选中的所有数据组成的数组 }
* @property { title : {String} 弹窗上方的名字 }
* @property { showScreen : {Boolean} 是否需要筛选框 }
* @property { nodeclick : 节点被点击时的回调 }
* @property { defaults : {Array} 默认选中的数据 传key组成的数组 }
* @property { defaultExpandAll : {Boolean} 是否默认展开 }
* @version 1.0.0
* @edit: 2018/8/2
*/
<template>
<div class="air-tree-wrappers">
<div class="el-dialog__title">{{ this.title }}</div>
<div v-if="screen">
<el-input class="input"
:placeholder="placeholder"
prefix-icon="el-icon-search"
v-model="filterText"
>
</el-input>
</div>
<el-tree class="filter-tree"
:data="data"
:props="defaultProps"
:show-checkbox="checkbox"
:default-expand-all="defaultExpandAll"
:filter-node-method="filterNode"
@check-change='check()'
ref="tree"
:node-key="'id'"
@node-click="nodeclick">
</el-tree>
<div class="foot">
</div>
</div>
</template>
<script>
export default {
props: {
placeholder: {
type: String
},
data: {
type: Array
},
default: {
type: Array
},
showCheckbox: {
type: Boolean
},
width: {
type: String
},
title: {
type: String
},
showScreen: {
type: Boolean
},
defaultExpandAll: {
type: Boolean,
}
},
data() {
return {
filterText: '',
countent: "",
checkbox: this.showCheckbox,
defaultProps: {
children: "children",
label: "label",
},
data1: new Array,
dialogTableVisible: false,
screen: this.showScreen
};
},
watch: {
filterText(val) {
this.$refs.tree.filter(val);
}
},
methods: {
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//传回父组件
check() {
//获取所有被选中的data的数组
let takeDate = this.$refs.tree.getCheckedNodes();
this.$emit('check', takeDate);
//获取所有被选中的key的数组
let keyDate = this.$refs.tree.getCheckedKeys();
this.$emit('checkkey', keyDate);
},
nodeclick() {
let key = this.$refs.tree.getCurrentKey()
this.$emit('click', key);
}
}
};
</script>

里面用的事件都是element封好的直接用就好了比如

更多的事件,属性直接去element官网找就好了。

this.$nextTick(()=>{}) 这个方法的作用是 DOM更新完成后执行
应该就相当于一个延时函数,很有用,有时你的函数触发的时候dom还没加载出来比如使用$ref时候就会发生这种情况。

vue+element tree(树形控件)组件(2)的更多相关文章

  1. vue+element tree(树形控件)组件(1)

    最近做了第一个组内可以使用的组件,虽然是最简版,也废了不少力.各位前辈帮我解决问题,才勉强搞定.让我来记录这个树形组件的编写过程和期间用到的知识点. 首先说说需求,就是点击出现弹窗+蒙板,弹窗内容是一 ...

  2. 不依任何赖第三方,单纯用vue实现Tree 树形控件

    这几天接到一个需求,里面有需要做一个属性组件,找的第三方的,但是不能完全满足我的需求,有这时间,我就自己做个小轮子吧. 先看效果图(红点之前用的字体图标,是个对号,这里为了方便,用圆圈代替了选中状态, ...

  3. vue+element-ui之tree树形控件有关子节点和父节点之间的各种选中关系详解

    做后端管理系统,永远是最蛋疼.最复杂也最欠揍的事情,也永远是前端开发人员最苦逼.最无奈也最尿性的时刻.蛋疼的是需求变幻无穷,如同二师兄的三十六般变化:复杂的是开发难度寸步难行,如同蜀道难,难于上青天: ...

  4. Element ui tree树形控件获取当前节点id和父节点id

    低版本Element ui tree树形控件获取当前节点id和父节点id的方法:点击查看 最新版本Element ui tree树形控件获取当前节点id和父节点id教程: 1.找到node_modul ...

  5. vue_elementUI_ tree树形控件 获取选中的父节点ID

    el-tree 的 this.$refs.tree.getCheckedKeys() 只可以获取选中的id 无法获取选中的父节点ID想要获取选中父节点的id;需要如下操作1. 找到工程下的node_m ...

  6. ElementUI Tree树形控件renderContent return时报错

    问题描述: 使用Tree树形控件使用render-content渲染时return后报错或npm run dev时候报错,报错信息相同,如下: 问题分析: renderContent函数中需要使用js ...

  7. BootstrapBlazor实战 Tree树形控件使用(2)

    继续上篇实战BootstrapBlazor树型控件Tree内容, 本篇主要讲解整合Freesql orm快速制作数据库后台维护页面 demo演示的是Sqlite驱动,FreeSql支持多种数据库,My ...

  8. BootstrapBlazor实战-Tree树形控件使用(1)

    实战BootstrapBlazor树型控件Tree的使用, 以及整合Freesql orm快速制作数据库后台维护页面 demo演示的是Sqlite驱动,FreeSql支持多种数据库,MySql/Sql ...

  9. Element ui 使用 Tree 树形控件

    使用树形控件需要映入 jsx才能运行链接:https://github.com/vuejs/babel-plugin-transform-vue-jsx#usage npm install\ babe ...

随机推荐

  1. 动态指定log4net日志文件名称

    如果是希望日志文件按常见的日期格式动态命名,没什么好说的,直接修改app.config <param name="DatePattern" value="yyyyM ...

  2. 让Spring不再难懂-aop篇

    什么是aop AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP允许 ...

  3. Linux修改主机名称方法

    碰到这个问题的时候,是在安装Zookeeper集群的时候,碰到如下问题 java.net.UnknownHostException: XXXX Name or service not knownjav ...

  4. php7 安装mongodb扩展

    下载 mongodb-1.6.0.tgz   wget https://pecl.php.net/get/mongodb-1.6.0.tgz  版本太低的话有些语法不一样,起码1.5以上吧 进入 mo ...

  5. 2010提高组-C]关押罪犯(扩展域并查集

    题:https://www.cometoj.com/problem/0073 #include<bits/stdc++.h> using namespace std; ; struct n ...

  6. 信息熵、信息增益、信息增益率、gini、woe、iv、VIF

    整理一下这几个量的计算公式,便于记忆 采用信息增益率可以解决ID3算法中存在的问题,因此将采用信息增益率作为判定划分属性好坏的方法称为C4.5.需要注意的是,增益率准则对属性取值较少的时候会有偏好,为 ...

  7. 【Java集合】试读LinkedList源码

    LinkedList的本质是双向链表.(01) LinkedList继承于AbstractSequentialList,并且实现了Dequeue接口. (02) LinkedList包含两个重要的成员 ...

  8. Java中的Properties类

    目录 Java中的Properties类 前言 主要方法 读取Properties文件 相关实例 Java中的Properties类 前言 Java中的Properties类属于配置文件,以键值对的方 ...

  9. Uber自动驾驶卡车正式运营,是否会给卡车司机彻底“宣判死刑”?

    随着科技的快速迭进和嬗变,大众的生活也在被全面革新和改变.不过有些改变是显性的,比如PC和智能手机的出现.有些改变却是隐性的,比如太空科技.云计算等.而在当下,又一个看似与大众生活紧密相关,但一般人却 ...

  10. <USACO06FEB>奶牛零食Treats for the Cowsの思路

    写不来dp的日常 ....就这样吧 #include<cstdio> #include<cstring> #include<iostream> #include&l ...