AngularJS实现树形结构(ztree)菜单示例代码


Posted in Javascript onSeptember 18, 2016

树形结构

树形结构有多种形式和实现方式,zTree可以说得上是一种比较简洁又美观的且实现起来也相对简单。zTree是一个依靠jQuery实现的多功能“树插件”。它最大的优点是配置灵活,只要id与pid的值相同就可形成一个简单的父子结构。再加上免费开源,使用zTree的人越来越多。

效果图如下

AngularJS实现树形结构(ztree)菜单示例代码

首先你需要知道AngularJS的双向数据绑定是什么才可以更好的理解下面的代码,想了很久才想出用下面的代码来实现左侧菜单树形结构

要实现上面的功能你需要操作如下步骤:

在HTML标签内添加ng-app,让AngularJS掌管整个HTML文档

<html lang="en" ng-app="myApp">

myApp是我自己创建的模块

整个菜单的标签如下

<div id="left-menu" ng-controller="Left-navigation" class="col-sm-2" style="margin-top: 50px">
  <ul>

    <!-- 仪表盘 -->
    <li>
  <!-- 让每一个一级菜单绑定一个函数navFunc,并且传入一个指定的字符串 -->
      <a href="" ng-click="navFunc('dashboard')">仪表盘</a>
    </li>

    <!-- 主机 -->
    <li>
      <span><a ng-click="navFunc('hosts')" href="">主机</a></span>
      <!-- 如果要显示二级菜单,则navAction必须等于制定的字符串,这个是自己定义的,navAction是在controller中创建的 -->
  <ul ng-show="navAction === 'hosts'">
        <li><a href="">主机</a></li>
        <li><a href="">分组</a></li>
      </ul>
    </li>

    <!-- 容器 -->
    <li>
      <a href="" ng-click="navFunc('container')">容器</a>
    </li>

    <!-- 模板 -->
    <li>
      <span><a href="" ng-click="navFunc('template')">模板</a></span>
      <ul ng-show="navAction === 'template'">
        <li><a href="">监控</a></li>
        <li><a href="">装机</a></li>
      </ul>
    </li>

    <!-- 用户 -->
    <li>
      <span><a href="" ng-click="navFunc('users')">用户</a></span>
      <ul ng-show="navAction === 'users'">
        <li><a href="">修改资料</a></li>
        <li><a href="">修改密码</a></li>
        <li><a href="">添加用户</a></li>
        <li><a href="">消息</a></li>
      </ul>
    </li>

    <!-- 配置 -->
    <li>
      <a href="" ng-click="navFunc('configuration')">配置</a>
    </li>

  </ul>
</div>

JS代码如下

// 创建myApp模块
var myApp = angular.module('myApp', [])

// 创建一个controller,名为Left-navigation
myApp.controller('Left-navigation', ['$scope', function ($scope) {
  // 定义一个函数navFunc, 接受一个参数
 $scope.navFunc = function (arg) {
 // 让navAction变量等于函数传入过来的值arg
    $scope.navAction = arg;
  };
}]);

总结

整体的思路其实就是点击一级导航的时执行一个函数,并把一级导航的名称发送给函数,然后二级导航在navAction变量等于它的上级导航的时候就显示,否则就隐藏。以上就是这篇文章的全部内容,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
JavaScript Array扩展实现代码
Oct 14 Javascript
JQuery的ON()方法支持的所有事件罗列
Feb 28 Javascript
jquery滚动到顶部底部代码
Apr 20 Javascript
vue父组件中获取子组件中的数据(实例讲解)
Sep 27 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
Jan 23 Javascript
Express进阶之log4js实用入门指南
Feb 10 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 Javascript
解析Json字符串的三种方法日常常用
May 02 Javascript
解决vue中修改了数据但视图无法更新的情况
Aug 27 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
Dec 23 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
Sep 10 jQuery
利用jquery实现瀑布流3种案例
Sep 18 #Javascript
JQuery遍历元素的父辈和祖先的方法
Sep 18 #Javascript
移动端js触摸事件详解
Sep 18 #Javascript
AnjularJS中$scope和$rootScope的区别小结
Sep 18 #Javascript
jQuery向父辈遍历的简单方法
Sep 18 #Javascript
js字符串引用的两种方式(必看)
Sep 18 #Javascript
jQuery实现获取元素索引值index的方法
Sep 18 #Javascript
You might like
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
小试JQuery的AutoComplete插件
2011/05/04 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
Python assert语句的简单使用示例
2019/07/28 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
教师节横幅标语
2014/10/08 职场文书
师德标兵事迹材料
2014/12/19 职场文书
浪漫婚礼主持词开场白
2015/11/24 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
15个值得收藏的JavaScript函数
2021/09/15 Javascript
什么是css原子化,有什么用?
2022/04/24 HTML / CSS