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 相关文章推荐
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
Jan 11 Javascript
js中top/parent/frame概述及案例应用
Feb 06 Javascript
jquery 定位input元素的几种方法小结
Jul 28 Javascript
JavaScript验证图片类型(扩展名)的函数分享
May 05 Javascript
javascript 实现map集合
Apr 03 Javascript
JavaScript实现的MD5算法完整实例
Feb 02 Javascript
详谈js遍历集合(Array,Map,Set)
Apr 06 Javascript
Node.js中的http请求客户端示例(request client)
May 04 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
基于JavaScript实现表格滚动分页
Nov 22 Javascript
angular的输入和输出的使用方法
Sep 22 Javascript
世界上最短的数字判断js代码
Sep 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
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
js获取div高度的代码
2008/08/09 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
JS如何生成动态列表
2020/09/22 Javascript
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
校园自助餐厅的创业计划书
2013/12/26 职场文书
运动会口号16字
2014/06/07 职场文书
爱护公物演讲稿
2014/09/09 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
保洁员岗位职责
2015/02/04 职场文书
学生会干部任命书
2015/09/21 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书