element-ui 中el-select 嵌套 tree树形控件
最近项目中要求要有一个下拉框,里面的选项可以折叠并且多选
我第一反应用Cascader 级联选择器不就好啦,多简单啊
但是,他要求不要在右边展开子选项
只能下拉展开
这个时候我就想起用select,嵌套tree控件
不是就刚好满足了要求嘛
//option展开高度太小,把height设置为auto就好啦
js部分
>
export default {
data() {
return {
mineStatus: "",
mineStatusValue: [],
data: [
{
id: 1,
label: "一级 1",
children: [
{
id: 4,
label: "二级 1-1"
}
]
},
{
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"
}
]
}
],
defaultProps: {
children: "children",
label: "label"
}
};
},
methods: {
//select框值改变时候触发的事件
selectChange(e){
var arrNew = [];
var dataLength = this.mineStatusValue.length;
var eleng = e.length;
for(let i = 0;
i< dataLength ;
i++){
for(let j = 0;
j < eleng;
j++){
if(e[j] === this.mineStatusValue[i].label){
arrNew.push(this.mineStatusValue[i])
}
}
}
this.$refs.tree.setCheckedNodes(arrNew);
//设置勾选的值
},
handleCheckChange() {
let res = this.$refs.tree.getCheckedNodes(true, true);
//这里两个true,1. 是否只是叶子节点 2. 是否包含半选节点(就是使得选择的时候不包含父节点)
let arrLabel = [];
let arr = [];
res.forEach(item => {
arrLabel.push(item.label);
arr.push(item);
});
this.mineStatusValue = https://www.it610.com/article/arr;
this.mineStatus = arrLabel;
console.log('arr:'+JSON.stringify(arr))
console.log('arrLabel:'+arrLabel)
}
}
};
>
【element-ui 中el-select 嵌套 tree树形控件】
文章图片
如果出现这个问题,是因为select中没有加入 multiple collapse-tags这两个select属性
,不能多选导致报错,这个我还折腾了挺久的
好啦,这样基本上就完成啦
文章图片
推荐阅读
- el-table表格拖动列记住列宽度功能(刷新页面还在)
- element-ui|如何对 el-table列表项 内的 form表单元素 使用 自定义规则校验
- el-button type=text 文字按钮 边框去除和添加
- vue|vue el-upload 组件上传的 文件跟随表单数据 发送后台保存
- 前端|Vue Element UI Table 表自动生成 Table 表封装 2.0(详细教程)
- elementUI|element-ui 之 el-tooltip 如何自定义修改样式(???)
- vue|vue爬坑记:element-ui的标签页之间跳转的手动控制