import axios from "axios";
import tabs1 from "../tab_content/tab1.vue";
import myTree from "./items.vue";
export default {
data() {
return {
theModel: [], };
props: ["tabs"]
}, components: { myTree },
methods: {
tabsvalue(data){
console.log(data)
this.$emit("get-data",data)
}
},
watch: { },
created() { axios
.get("../../../static/nav.json")
// .get("。。。")
.then(
function(response) {
var arr = response.data.dActionList;
var zNodes = [];
var farternode = [];
for (var i in arr) {
if (arr[i].desktop == "0" && arr[i].parentId != null) {
farternode.push(arr[i]);
}
if (arr[i].parentId && arr[i].desktop == "1") {
zNodes.push(arr[i]);
}
}
var childNodes = function getChildNodes(
parentId,
zNodes,
nodes,
child,
parentItem
) {
if (!parentId || !zNodes) return nodes;
var childNode = [];
for (var k in zNodes) {
if (zNodes[k].parentId == parentId) {
if (child) {
childNode.push(zNodes[k]);
} else {
nodes.push(zNodes[k]);
}
childNodes(zNodes[k].id, zNodes, nodes, true, zNodes[k]);
}
}
if (childNode.length > 0 && child) {
parentItem.children = childNode;
}
return nodes;
}; for (var j in farternode) {
farternode[j]["children"] = [];
var nodes = [];
nodes = childNodes(farternode[j].id, zNodes, nodes, false, null);
farternode[j].children = nodes;
}
console.log(farternode);
console.log(nodes);
this.theModel = farternode;
}.bind(this)
)
.catch(function(error) {
console.log(error);
});
console.log(this.$refs.tabsdata) }
};

  父组件 的js

<template>
<div id="navto">
<my-tree v-for="menuItem in theModel" :key="menuItem.id" :model="menuItem" @data-tabsvalue="tabsvalue"></my-tree>
</div>
</template>

父组件的节点

import tabs from '../compont/tabs.vue'
export default {
name: 'treeMenu',
props:["model"], data () {
return {
folderIcon: 'folder',
isDynamicFolder: false,
isOpen: false,
}
},
computed: {
isFolder () {
return !!(this.model.children && this.model.children.length)
}
},
watch: {
isDynamicFolder () {
this.isOpen = true
this.folderIcon = 'folder-open'
}
},
methods: {
tabsvalue(data){
this.$emit("data-tabsvalue",data)
},
run(data){ if(!data.children){
this.tabsvalue(data)
console.log(data.text);
console.log(data.url)
}
},
toggle () {
this.isOpen = !this.isOpen
this.folderIcon = this.isOpen ? 'folder-open' : 'folder'
}
}
}

子组件的js

<template>
<li>
<span @click="toggle">
<i :class="['icon', (isFolder || isDynamicFolder) ? folderIcon : 'file-text']"></i>
<span class="mousestyle">{{ model.text}}</span>
</span>
<!-- <transition name="mybox" > -->
<ul v-if="isOpen">
<span v-for="item in model.children" :key="item.id" @click.stop="run(item)">
<tree-menu :model="item" @data-tabsvalue="tabsvalue">
</tree-menu>
</span>
</ul>
<!-- </transition> -->
</li>
</template>

子组件的节点

vue 侧边导航栏递归显示的更多相关文章

  1. 记一次Vue跨导航栏问题解决方案

    简述 这篇文章是我项目中,遇到的一个issue,我将解决过程和方法记录下来. 本篇文章基于Vue.js进行的前端页面构建,由于仅涉及前端,将不做数据来源及其他部分的叙述.使用的CSS框架是 Boots ...

  2. 【源码分享】jquery+css实现侧边导航栏

    jquery+css实现侧边导航栏 最近做项目的时候,突然想用一个侧边导航栏,网上找了几个插件,有的太丑而且不太符合我的预期.与其修改别人的代码,不如自己来写一个了.废话不多说先上图,感兴趣的请继续看 ...

  3. [置顶] bootstrap自定义样式-bootstrap侧边导航栏的实现

    前言 bootstrap自带的响应式导航栏是向下滑动的,有时满足不了个性化的需求,需要做一个类似于android drawerLayout 侧滑的菜单,这就是我要实现的bootstrap自定义侧滑菜单 ...

  4. 【机器学习实践】Jupyter Notebook安装 侧边导航栏功能 操作及其他常用扩展功能介绍

    安装过程:  1. 首先我们引入jupyter_contrib_nbextension这个第三方库. 2. 在Anaconda Promot中输入命令: pip install jupyter_con ...

  5. Android 新兴的UI模式——侧边导航栏【转】

    侧边导航栏也就是大家熟知的SliddingMenu,英文也叫Fly-In App Menu.Side Navigation等.当然谷歌现在已经推出类似这个效果的组件--Navigation Drawe ...

  6. 【代码笔记】iOS-在导航栏中显示等待对话框

    一,效果图. 二,代码. ViewController.m #import "ViewController.h" @interface ViewController () @end ...

  7. dedecms左侧导航栏不显示问题

    dedecms左侧导航栏不显示问题 在做织梦项目时,经常会碰到后台左侧导航栏不显示的问题,如下所示: ​ 这主要是由于文件权限不足造成的.有两种方法 第一种:把 /data 文件夹全部改成 777 权 ...

  8. uwp - 上滑隐藏导航栏下滑显示

    原文:uwp - 上滑隐藏导航栏下滑显示 好久没写博客了,因为忙着工作.昨天周末填坑需要做一个上滑列表数据时隐藏导航栏下滑时显示的效果,下面分享一下我的做法,希望能给你带来帮助. 思路是通过判断滚动条 ...

  9. 超详细Vue实现导航栏绑定内容锚点+滚动动画+vue-router(hash模式可用)

    超详细Vue实现导航栏绑定内容锚点+滚动动画+vue-router(hash模式可用) 转载自:https://www.jianshu.com/p/2ad8c8b5bf75 亲测有效~ <tem ...

随机推荐

  1. 你知道C语言为什么会有“_”(下划线)吗?

    学过C语言的都知道,变量名只能由字母.数字.下划线组成,且只能以字母或者下划线开头. 学英语时我们都学过连字符(“-”),这个东东主要用来连接单词的.那么C语言为什么不直接 用连字符,而要改用下划线呢 ...

  2. shell脚本批量启动zookeeper

    脚本名称为zk_run.sh 将下面代码粘贴进zk_run.sh 添加执行权限 chmode +x zk_run.sh 运行脚本 ./zk_run.sh start 如果发现zookeeper没有启动 ...

  3. 分布式远程服务调用(RPC)框架

    分布式远程服务调用(RPC)框架 finagle:一个支持容错,协议无关的RPC系统 热门度(没变化) 10.0 活跃度(没变化) 10.0  Watchers:581 Star:6174 Fork: ...

  4. IDEA 2018.2破解

    最新的IDEA激活方式 使用网上传统的那种输入网址的方式激活不了,使用http://idea.lanyus.com/这个网站提供的工具进行 1.进入hosts文件中:C:\Windows\System ...

  5. 【Python】__slots__ 、@property、多重继承、定制类、枚举类、元类

    __slots__ @property 多重继承 定制类 枚举类 元类 [使用__slots__] 1.动态语言的一个特点就是允许给实例绑定任意的方法和变量,而静态语言(例如Java)必须事先将属性方 ...

  6. OpenStack之Nova模块

    Nova简介 nova和swift是openstack最早的两个组件,nova分为控制节点和计算节点,计算节点通过nova computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,no ...

  7. CF1153E Serval and Snake(交互题)

    题目 CF1153E Serval and Snake 很有意思的一道交互题 做法 我们观察到,每次查询一行,当这一行仅包含一端是返回的答案是奇数 根据这个性质查询每一行每一列,我们大体能知道两端的位 ...

  8. Python3.x:访问带参数链接并且获取返回json串

    Python3.x:访问带参数链接并且获取返回json串 示例一: import json import xml.dom.minidom from urllib import request, par ...

  9. MVC中一个Form多个submit在controller中如何区分提交的是那个submit(如:登陆和注册)

    1. 用Html.BeginForm(ActionName,ControllerName,Post)来实现controller-action的路由, 2. Form里的每个input的name值统一, ...

  10. GridView自定义自增长的 序号 列

    如图所示,添加一个普通列(非模板列),将其显示文本为    序号 在GridView的RowDataBound事件中作如下处理 后台.CS 代码: