vue中tree回填数据

 form表单回填tree的数据时,后端不能提供tree的所需数据格式,后端提供的数据还是tree的数据格式,我需要把tree的数据格式转化成回填所需要的的数据格式,如:["1309303221440761857","1451486975712358401","1309303221440761860"]的数据格式

一、tree的form表单回填数据

 <el-tree
     :data="menuList"
     :props="menuListTreeProps"
     :default-checked-keys="checkMenuRole"
     :default-expanded-keys="expandRole"
     node-key='id'
     accordion
     @check='treeCheck'
     show-checkbox>
</el-tree>

1、data:是tree展示的数据 

2、props:如果后端数据不是label和children字段,设置如:

{ label:‘name’,children:'subMenuList' }

3、default-checked-keys :数据回填所需的字段,数据如:["1309303221440761857","1451486975712358401","1309303221440761860"]

4、default-expand-keys: 默认展开的节点

5、node-key: 每个节点作为唯一的表示属性,必须要与后端数据的字段保持一致

6、check:获取选中的数据方法

 treeCheck(...value) {
    //选中当前节点的数据
   let checkedNodes = value[1].checkedNodes.map((v) => v.id);
},

 后端返回此数据

[{

		id: "1309303221440761857",
		name: "目录1",
		subMenuList: [{
			id: "1309303221440761860",
			name: "菜单目-1",
		}, {
			id: "1309303221440761860",
			name: "菜单目-2",
		}]
	}, {

		id: "1309303221440761860",
		name: "目录2",
		subMenuList: [{
			id: "1309303221440761872",
			name: "菜单一",
			subMenuList: [{
				id: "1309303228642381863",
				name: "菜单一1",
			}, {
				id: "1309303228642381861",
				name: "菜单一2",
			}]
		}, {
			id: "1309303221440761873",
			name: "菜单二",
		}]
	}

]

在上面此数据中取出只有ID的数组

let menuFilter = (function () {
    let resultArr = [];
    let getTickMenuId = function (obj) {
        if (obj.id) {
            resultArr.push(obj.id);
        }
        if (obj.subMenuList instanceof Array) {
            for (let child of obj.subMenuList) {
               getTickMenuId(child);
            }
        }
    }
    return {
        filter: function (arr) {
            if (!arr instanceof Array) {
                return false;
            }
            resultArr = [];
            for (let rootMenu of arr) {
                getTickMenuId(rootMenu);
            }
            return resultArr;
        }
    }
})();

 使用方法:

menuFilter.filter(arr)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3 ,你可以使用递归组件来实现树形结构的数据展示。以下是一个简单的示例: ```html <template> <ul> <li v-for="item in treeData" :key="item.id"> {{ item.label }} <tree :tree-data="item.children" v-if="item.children" /> </li> </ul> </template> <script> export default { name: 'Tree', props: { treeData: { type: Array, default: () => [] } } } </script> ``` 在上面的代码,我们定义了一个名为 `Tree` 的组件,并传递了一个名为 `treeData` 的 props,它是一个数组类型的数据。然后我们使用 `v-for` 指令循环遍历 `treeData` 数组的每一项,并渲染成一个列表项。如果该项有子节点,我们使用递归调用 `Tree` 组件来渲染子节点。 你可以在父组件传递树形数据给 `Tree` 组件,例如: ```html <template> <div> <h1>Tree Example</h1> <tree :tree-data="treeData" /> </div> </template> <script> import Tree from './Tree.vue' export default { name: 'App', components: { Tree }, data() { return { treeData: [ { id: 1, label: 'Node 1', children: [ { id: 2, label: 'Node 1.1', children: [ { id: 3, label: 'Node 1.1.1' }, { id: 4, label: 'Node 1.1.2' } ] }, { id: 5, label: 'Node 1.2' } ] }, { id: 6, label: 'Node 2', children: [ { id: 7, label: 'Node 2.1' }, { id: 8, label: 'Node 2.2' } ] } ] } } } </script> ``` 上面的代码定义了一个名为 `App` 的根组件,并传递了一个名为 `treeData` 的数组类型数据给 `Tree` 组件,它包含了树形结构的数据。当你在浏览器查看这个示例时,你应该可以看到一个树形结构的列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值