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 相关文章推荐
Js之软键盘实现(js源码)
Jan 30 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
Sep 20 Javascript
关于图片的预加载过程中隐藏未知的
Dec 19 Javascript
jQuery动态地获取系统时间实现代码
May 24 Javascript
jquery easyui滚动条部分设置介绍
Sep 12 Javascript
分享一则javascript 调试技巧
Jan 02 Javascript
用jQuery获取table中行id和td值的实现代码
May 19 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
Feb 23 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
Jun 16 jQuery
node 利用进程通信实现Cluster共享内存
Oct 27 Javascript
一个手写的vue放大镜效果
Aug 09 Javascript
利用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脚本的10个技巧(3)
2006/10/09 PHP
请php正则走开
2008/03/15 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
用Python进行TCP网络编程的教程
2015/04/29 Python
matplotlib绘制动画代码示例
2018/01/02 Python
Python线性方程组求解运算示例
2018/01/17 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
python各层级目录下import方法代码实例
2020/01/20 Python
Python sorted排序方法如何实现
2020/03/31 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
会计专业自我评价
2014/02/12 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
Django一小时写出账号密码管理系统
2021/04/29 Python
redis实现共同好友的思路详解
2021/05/26 Redis
opencv 分类白天与夜景视频的方法
2021/06/05 Python