基于element-ui,el-tree-select的二次封装。
npm install yf-tree-select -S
// main.js
import YfTreeSelect from 'yf-tree-select'
Vue.use(YfTreeSelect)
import {YfTreeSelect} from 'yf-tree-select'
components:{
YfTreeSelect
}
预览地址
<template>
<yf-tree-select
v-model="selectValue"
:tree-attrs="treeParams"
/>
</template>
<script>
import {YfTreeSelect} from 'yf-tree-select'
const data = [
{name:'标签一',id:1,age:1},
{name:'标签二',id:2,age:2},
{
name:'标签三',
id:3,
age:3,
children:[
{name:'标签三-一',id:31,age:31},
{name:'标签三-二',id:32,age:41},
{name:'标签三-三',id:33,age:51},
]
},
]
export default {
components:{
YfTreeSelect
},
data(){
return {
selectValue: [],
treeParams: {
data,
filterable: true,
props:{
children: "children",
label: "name",
value: "id",
}
},
}
},
}
</script>
参数 |
说明 |
类型 |
默认值 |
v-model |
绑定值 |
string/number/array/object |
|
selectAttrs |
select的属性 |
object |
见下表 |
treeAttrs |
tree的属性 |
object |
见下表 |
customerFilter |
是否自定义过滤(默认标签名过滤),true配合_treeDataUpdateFun使用 |
boolean |
false |
foldLabels |
是否折叠labels |
boolean |
false |
onlyLeaf |
只能选择叶子节点 |
boolean |
false |
needValueName |
绑定值是否需要返回id和标签名(object) |
boolean |
false |
placement |
弹出框出现位置(el-popover参数) |
string |
bottom |
参数 |
说明 |
类型 |
默认值 |
placeholder |
占位符 |
string |
请选择 |
disabled |
是否禁用 |
boolean |
false |
clearable |
是否可清空 |
boolean |
true |
其他与element-ui一致,可覆盖。 详情el-select
:popper-append-to-body="false" // 固定false
:filterable="false" // 固定false 改为弹出中搜索
multiple // 根据v-model类型判断是否多选 string、number、object单选, array多选
传入selectAttrs不会影响默认值,除非覆盖
参数 |
说明 |
类型 |
默认值 |
filterable |
是否展示搜索块 |
boolean |
false |
leafOnly |
v-model是否只是叶子节点 |
boolean |
false |
includeHalfChecked |
v-model是否包含半选节点 |
boolean |
false |
data |
展示数据 |
array |
|
props |
配置选项 |
object |
见下表 |
参数 |
说明 |
类型 |
默认值 |
label |
指定节点标签为节点对象的某个属性值 |
string |
name |
children |
指定子树为节点对象的某个属性值 |
string |
children |
value |
指定节点id为节点对象的某个属性值 |
string |
value |
code |
如果有code,则标签显示为name(code) |
string |
|
其他与element-ui一致,可覆盖。 详情el-tree
:show-checkbox="selectAttrs.multiple" // 使用v-model值类型判断是否对树进行多项,取消对el-tree的人为传参show-checkbox
:node-key="propsValue" 自动获取treeAttrs.props.value
:draggable="false" 屏蔽拖动
传入treeAttrs不会影响默认值,除非覆盖
this.$refs.xxx.method
方法名 |
说明 |
参数 |
_updatePopoverLocationFun |
更新弹出框位置 |
|
_updateH |
更新弹出框宽度 |
|
_treeDataUpdateFun |
更新树data |
(data)接收一个数组 |
如果数据改变但是树没更新,使用this.$refs.xxx._treeDataUpdateFun手动更新
时间名称 |
说明 |
回调参数 |
search-fun |
文本框输入内容触发 |
输入框的值 |
remove-tag |
删除标签触发 |
第一个参数是删除的id,第二个参数是删除的标签名(如果标签名有重复的可能会错,标签唯一才能获取到正确id,可配合code使用) |
select-clear |
清空输入框触发 |
|
value-detail |
选中改变触发 |
v-model的标签和标签id的数组对象 |
all-detail |
选中改变触发 |
v-model的所有属性的数组对象 |
label-ids-detail |
标签改变触发 |
展示标签的数组对象 |