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实现无限级分类. 代码示例: ...
随机推荐
- PreparedStatementSQLException
目录 文章背景 目录 问题分析 问题解决 说明 参考文章 版本记录 layout: default title: PreparedStatementSQLException category: [Te ...
- Computer Vision with Matlab
PPT: https://max.book118.com/html/2016/0325/38682623.shtm Code: http://www.pudn.com/Download/item/id ...
- 编写高质量代码改善C#程序的157个建议——建议114:MD5不再安全
建议114:MD5不再安全 MD5不再安全不是就算法本身而言的.如果从可逆性的角度出发,MD5值不存在被破解的可能性. MD5被广泛应用于密码验证和消息完整性验证.假设新注册一个用户,当注册用户的密码 ...
- 【微服务架构】SpringCloud之Eureka(服务注册和服务发现基础篇)(二)
上篇文章讲解了SpringCloud组件和概念介绍,接下来讲解一下SpringCloud组件相关组件使用.原理和每个组件的作用的,它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix ...
- 第二章第一个项目——关于mime
一句话就能解释清楚. MIME标注HTTP响应类型. 而后缀名标注文件类型. ---------分割线-------- http响应实质上只有数据,没有文件名. 举个例子吧. HTTP/1.1 200 ...
- opencv——播放视频
#include "stdafx.h" #include <opencv2\opencv.hpp> #include <iostream> #include ...
- EF中三大开发模式之DB First,Model First,Code First以及在Production Environment中的抉择
一:ef中的三种开发方式 1. db first... db放在第一位,在我们开发之前必须要有完整的database,实际开发中用到最多的... <1> DBset集合的单复数... db ...
- Nginx自定义扩展模块
1. 概述 参考 Nginx开发HTTP模块入门 2. 扩展模块(假设根目录名称为nginx) nginx/configure文件中可以修改配置文件路径(编译时使用): 例如像把配置文件从默认的ngi ...
- C# 根据实体类的属性动态生成字符串
情景: 目前有两个实体类:Student,ClassInfo. public class Student { public string Name { get; set; } public strin ...
- Linux Shell 编程学习笔记
1:Shell Script中if语句的条件部分要以分号来分隔 2:要注意条件测试部分中的空格.在方括号的两侧都有空格 3:echo "Hi, ${a}s" 单引号中的变量不会进行 ...