赞
踩
npm i element-ui -S
在main.js中引用:
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css' //整体引入
Vue.use(ElementUI)
<el-input placeholder="搜索" prefix-icon="el-icon-search" v-model="filterText"> </el-input> <el-tree class="filter-tree" show-checkbox // 每个节点前边显示多选框 :data="organizationData" // 树形结构绑定的数据 :filter-node-method="filterNode" // 节点过滤制定的方法 highlight-current // 点击选中的节点会高亮 :props="defaultProps" ref="organizeTree" node-key="comCode" // 树形结构唯一标识的字段名 :default-expanded-keys="['2', '7']" // 默认展开的节点 :default-checked-keys="['5']" // 默认选中的节点 @node-click="handleStaffClick"></el-tree> // 处理节点点击事件
3.js:
data () { return { filterText: '', // 过滤节点输入框输入的关键字 organizationData: [{ // 树形结构数据 label: '一级 1', children: [{ label: '二级 1-1', comCode: '1', children: [{ comCode: '2', label: '三级 1-1-1' }] }] }, { label: '一级 2', children: [{ comCode: '3', label: '二级 2-1', children: [{ comCode: '4', label: '三级 2-1-1' }] }, { comCode: '5', label: '二级 2-2', children: [{ comCode: '6', label: '三级 2-2-1' }] }] }, { comCode: '7', label: '一级 3', children: [{ comCode: '8', label: '二级 3-1', children: [{ comCode: '9', label: '三级 3-1-1' }] }, { comCode: '10', label: '二级 3-2', children: [{ comCode: '11', label: '三级 3-2-1' }] }] }], defaultProps: { // 树形结构 children: 'children', label: 'label' } } }, methods: { /** * 树形结构过滤 */ filterNode: function (value, data) { if (!value) return true; console.log(data.label.indexOf(value) !== -1) return data.label.indexOf(value) !== -1; }, /** * 树形点击事件 */ handleStaffClick: function (data) { console.log(data); } }
.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {background-color: #e6061f;color: #fff;}
.el-tree-node__content>.el-tree-node__expand-icon {padding: 0 6px;}
6.补充:默认选中高亮
(1)element中提供了current-node-key属性
current-node-key="" // 参数为Number或者String格式的节点的key值
设置高亮个节点,
但2.4.10以下的版本无效,据说2.4.10以上的版本修复了这个问题(待验证),因为我使用的是2.4.10以下的版本所以这个方法无效
(2)setCurrentKey方法
this.$nextTick(function(){
this.$refs.organizeTree.setCurrentKey(key值);
})
7补充:树中自定义其他内容
<el-tree class="filter-tree" :data="organizationData"
style="flex:1;" :filter-node-method="filterNode"
highlight-current
:props="defaultProps" ref="organizeTree"
node-key="comcode" :default-expanded-keys="expandArray"
@node-click="handleStaffClick">
<span class="custom-tree-node" slot-scope="{ node, data }">
// !!注意:不兼容es6的ie不能兼容上述写法
<span>{{ node.label }}</span> //树的节点内容(label/value)
<span>{{'(' + data.sum + '人)'}}</span> //data为节点的数据,可获取其他属性
</span>
</el-tree>
// 不兼容的时候如果是简单的字符串拼接可以用以下方法进行拼接
// 官方文档中写了label可以是string也可以使一个function
this.defaultProps.label = function(data, node) {
return data.label + '(' + data.sum + '人)'
}
解决兼容问题,找到了另外大神的一篇文章:
ElementUI中Tree组件兼容IE解决方案
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。