vue 无限级分类导航
递归组件,实现无限级分类导航
https://cn.vuejs.org/v2/guide/components-edge-cases.html#%E9%80%92%E5%BD%92%E7%BB%84%E4%BB%B6
1、向后端请求数据,返回的数据结构长这样子

2、对后端返回的数据进行整理,整理为我们想要的结构,整理后数据结构长这样,如果有下级目录就添加children

最后递归组件,页面显示结果

父组件
HTML代码
<div>
<synchronize-cell v-for="(item,index) in data" :synClass="item" :key="index"></synchronize-cell>
</div>
js代码
data(){
return{
data:[]
}
},
methods:{
//对后端返回的数据整理为我们想要的结构
treeData() {
let tree = this.data.filter((father) => { //循环所有项
let branchArr = this.data.filter((child) => {
return father.id == child.parentId //返回每一项的子级数组
});
if(branchArr.length > 0) {
father.children = branchArr; //如果存在子级,则给父级添加一个children属性,并赋值
}
return father.parentId == 0; //返回第一层
});
console.log(tree)
this.data = tree //返回树形数据
},
}
子组件
<template>
<div>
<div class="courseWrapper" @click.stop="jumpRoute(synClass.type,synClass.courseId)">
<div class="courseTable" :class="synClass.type==0?'groupBorder':'courseBorder'">
<div class="clearfl titleStyle" :class="synClass.type==0?'titleBackStyle':''" :style="{paddingLeft:synClass.level*10+'px'}">
<div class="title">{{synClass.name}}</div>
<div class="play" v-if="synClass.type==1">播放</div>
</div>
</div>
<!-- 无限嵌套的重点就是在这里啦-判断是否有子节点,有的话就遍历子节点 -->
<template v-if="synClass.children">
<synchronize-cell v-for="(item,index) in synClass.children" :synClass="item" :key="index"></synchronize-cell>
</template>
</div>
</div>
</template> <script>
export default {
name: "synchronize-cell",
props: {
synClass: {
type: Object,
default: function () {
return {}
}
},
},
methods:{
jumpRoute(type,courseId){
console.log(courseId)
if(type==0){
return
}else {
this.$router.push({
path:'/main/course/details',
query:{
courseId:courseId
}
})
}
}
}
}
</script> <style scoped>
.titleBackStyle {
background-color: #f2f2f2; }
.groupBorder{
border-bottom: 1px solid #e4e4e4;
}
.courseBorder{
border-bottom: 1px solid #f2f2f2;
} .titleStyle {
padding: 10px 0;
padding-right: 10px;
} .clearfl::after {
display: block;
content: "";
clear: both;
} .groupName {
background-color: #f2f2f2;
padding: 10px 12px;
border-bottom: 1px solid #e4e4e4;
font-size: 14px;
color: #515151;
} .courseChild::after {
display: block;
content: "";
clear: both;
} .title {
float: left;
} .play {
float: right;
}
</style>
其他方法:https://www.cnblogs.com/duke-peng/p/8550321.html
vue 无限级分类导航的更多相关文章
- php利用递归函数实现无限级分类
相信很多学php的很多小伙伴都会尝试做一个网上商城作为提升自己技术的一种途径.各种对商品分类,商品名之类的操作应该是得心应手,那么就可以尝试下无限级分类列表的制作了. 什么是无限级分类? 无限级分类是 ...
- FreeSql 使用 ToTreeList/AsTreeCte 查询无限级分类表
关于无限级分类 第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四级分类. 这种算法的数据库结构设计最为简单.category表中一个字段id,一个字段fi ...
- PHP无限级分类的实现(不使用递归)
无限级分类在开发中经常使用,例如:部门结构.文章分类.无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式: 查找分类A下面所有分类包含的文章. 1.实现原理 在 ...
- 一道无限级分类题的 PHP 实现
今天有网友出了道题: 给出如下的父子结构(你可以用你所用语言的类似结构来描述,第一列是父,第二列是子),将其梳理成类似如图的层次父子结构. origin = [('A112', 'A1122'), ( ...
- (实用篇)PHP递归实现无限级分类
在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信 ...
- PHP+MySQL无限级分类(非递归)
要实现无限级分类,递归一般是第一个也是最容易想到的,但是递归一般被认为占用资源的方法,所以很多系统是不考虑使用递归的 本文还是通过数据库的设计,用一句sql语句实现 数据库字段大概如下: 字段 说明 ...
- PHP无限级分类-递归(不推荐)
[http://www.helloweba.com/view-blog-204.html] 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢? ...
- 一款基于jQuery仿淘宝红色分类导航
今天给大家分享一款基于jQuery仿淘宝红色分类导航.这款分类导航适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览 ...
- PHP无限级分类生成树实例代码
分享一例php无限级分类生成树的代码,学习下php无限级分类的实现方法,有需要的朋友参考下. 一段非常精简的PHP无限极分类生成树方法,巧在引用. 例子,php实现无限级分类. 代码示例: ...
随机推荐
- js实现水平伸缩菜单
window.onload=function(){ var aA=document.getElementsByTagName('a'); for(var i=0; i<aA.length; i+ ...
- C primer 编程练习 (不断更新)
目前在看<C Primer>,以后会经常在这篇博客里更新课后的编程练习题 第二章:编程练习 2.1 #include <stdio.h> int main(void) { pr ...
- [Selenium With C#基础教程] Lesson-04 按钮
作者:Surpassme 来源:http://www.jianshu.com/p/83d7416c4b7d 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. Button通常有两 ...
- Atcoder 2566 3N Numbers(优先队列优化DP)
問題文N を 1 以上の整数とします. 長さ 3N の数列 a=(a1,a2,…,a3N) があります. すぬけ君は.a からちょうど N 個の要素を取り除き.残った 2N 個の要素を元の順序で並べ. ...
- 阿里云ECS云服务器编译安装PHP遇到virtual memory exhausted: Cannot allocate memory
阿里云编译安装php时遇到virtual memory exhausted: Cannot allocate memory 买了个服务器, 1G 的内存阿里云服务器,编译东西按说应该够了,安装相关的内 ...
- maven-plugins说明
maven提供了丰富的plugins. maven是一个插件执行的框架. 核心部分的描述: clean. clean插件. goal:clean 清除构建时生成的文件,文件目录 project.bui ...
- 纯分享scp协议如何工作
scp协议是什么, wiki上说: Secure copy or SCP is a means of securely transferring computer files between a lo ...
- Partition--分区总结
1. 在SQL SERVER 2008 R2 SP2之前版本,对分区只支持到1000个分区,之后版本支持到15000个分区.2. 分区索引对齐并不要求索引和表使用同一分区方案,但要求两者使用的分区方案 ...
- ZKEACMS添加搜索功能,搜索插件说明
ZKEACMS默认是不支持搜索功能的.但是搜索功能是比较常用的一个功能,使用这个搜索插件,可以让CMS支持搜索: 如下图所示: 数据库 Microstft Sql Server 2008R2 以上 页 ...
- SCVMM 安装
1.所有的物理机必须在域环境下 2.安装VMM和SQL使用的域账号尽量相同,并且唯一,尽量与管理hyper v主机使用的账号不相同