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检测网络是否具体连接功能的代码
May 23 Javascript
Spring mvc 接收json对象
Dec 10 Javascript
JavaScipt中栈的实现方法
Feb 17 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
May 27 Javascript
js基于setTimeout与setInterval实现多线程
Jun 17 Javascript
详解Node.js如何开发命令行工具
Aug 14 Javascript
node.js实现登录注册页面
Apr 08 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
Jul 25 Javascript
element vue Array数组和Map对象的添加与删除操作
Nov 14 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
Jun 24 Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 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令牌 Token改进版
2008/07/18 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
php实现的xml操作类
2016/01/15 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
webpack多页面开发实践
2017/12/18 Javascript
构建Python包的五个简单准则简介
2015/06/15 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
购房意向书范本
2014/04/01 职场文书
委托协议书范本
2014/04/22 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
python自动化测试之Selenium详解
2022/03/13 Python
redis复制有可能碰到的问题汇总
2022/04/03 Redis
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers