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 页面内容搜索,类似于 Ctrl+F功能的实现代码
Aug 13 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
Mar 21 Javascript
javascript制作loading动画效果 loading效果
Jan 14 Javascript
浅谈Javascript变量作用域问题
Dec 16 Javascript
JavaScript从数组中删除指定值元素的方法
Mar 18 Javascript
JS产生随机数的几个用法详解
Jun 22 Javascript
AngularJS中scope的绑定策略实例分析
Oct 30 Javascript
Angular 作用域scope的具体使用
Dec 11 Javascript
Vue实现动态创建和删除数据的方法
Mar 17 Javascript
element-ui中的select下拉列表设置默认值方法
Aug 24 Javascript
浅谈TypeScript的类型保护机制
Feb 23 Javascript
js删除指定位置超链接中含有百度与360的标题
Jan 06 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权重计算方法代码分享
2014/01/09 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
js中设置元素class的三种方法小结
2011/08/28 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
js获取视频时长代码
2014/04/10 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
Python中类的初始化特殊方法
2017/12/01 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
使用Python实现分别输出每个数组
2019/12/06 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
python如何调用百度识图api
2020/09/29 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
详解HTML5新增标签
2017/11/27 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
ORACLE第二个十问
2013/12/14 面试题
六查六看自查材料
2014/02/17 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
促销活动总结怎么写
2014/06/25 职场文书
党员转正介绍人意见
2015/06/03 职场文书
oracle索引总结
2021/09/25 Oracle
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL