文章目录
- 一、为什么要用树结构?
- 二、使用步骤
- 1.引入相关json
- 2.树结构的转换
- 总结
一、为什么要用树结构?
本文将讲述一个实例,构造一棵树来实现数组和tree的转换,这在前端树结构中是经常遇到的
后端返回树结构方便管理,前端也只需要请求一次接口拿到所有数据
前端树转成数组后的效果图:
二、使用步骤
1.引入相关json
代码如下(示例):请下载资源
2.读入数据
代码如下(示例):
<!--* @author:yxm* @description复用教材
-->
<template><div class="whole-title-bj"><ul class="whole-title" v-for="(item,index) in Object.keys(dataForm)" :key="index"><li class="title-left">{{item}}</li><li class="title-right"><divv-for="(item2, index2) in dataForm[item]":key="index2"class="title-right-name common-cursor":class="{ 'activate-index': selectForm[item] == item2.tag_id }"@click="selectClick(item, item2)">{{ item2.tag_name }}</div></li></ul></div>
</template><script>
import nationalJson from "./national_lesson_tag.json" //测试export default {name: '',data () {return {dataForm:{},//源数据selectForm:{},//选中当前selectMap:{},}},mounted(){this.initData(nationalJson.hierarchies[0])//测试},methods: {// 初始化数据递归initData(data) {测试let children = data.children;let hierarchy_name = data.hierarchy_name;let item = children[0];let tag_name = item.tag_name;this.$set(this.dataForm, hierarchy_name, children);this.$set(this.selectForm, hierarchy_name, item.tag_id);this.$set(this.selectMap, tag_name, item.tag_name);if(item.hierarchies) {this.initData(item.hierarchies[0]);}},// 点击选择教材selectClick(item, tag) {this.selectForm[item] = tag.tag_id;if(tag.children) {this.initData(tag.children[0]);}console.log(this.selectForm);},},
}
</script><style lang="scss" scoped>
/* @import url(); 引入css类 */
.whole-title-bj {width: 90%;.whole-title {display: flex;flex-wrap: wrap;align-items: baseline;.title-left {margin-right: 25px;color: #999999;}.title-right {width: 90%;display: flex;flex-wrap: wrap;line-height: 30px;&-name {padding: 0 20px;margin-bottom: 16px;margin-right: 20px;color: #000000;}}}.activate-index {color: #1e62ec !important;background: rgba(30, 98, 236, 0.1);border-radius: 17px;font-size: 14px;}
}
</style>
总结
使用递归把树转成列表数组,使得接口请求一次,前端自己组装结构