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,水平有待提高
Jan 31 Javascript
基于Jquery的实现回车键Enter切换焦点
Sep 14 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
深入学习JavaScript中的Rest参数和参数默认值
Jul 28 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
Dec 22 Javascript
基于jQuery实现火焰灯效果导航菜单
Jan 04 Javascript
vue模板语法-插值详解
Mar 06 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
Apr 16 Javascript
vuejs事件中心管理组件间的通信详解
Aug 09 Javascript
ES6中字符串string常用的新增方法小结
Nov 07 Javascript
vue实现的组件兄弟间通信功能示例
Dec 04 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 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
一些星际专用术语解释
2020/03/04 星际争霸
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
深入浅析python定时杀进程
2016/06/06 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
python中pip的安装与使用教程
2018/08/10 Python
python实现PID算法及测试的例子
2019/08/08 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
用python批量移动文件
2021/01/14 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
销售类个人求职信范文
2013/09/25 职场文书
2014年部门工作总结
2014/11/12 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
医院党建工作总结2015
2015/05/26 职场文书
六一活动主持词
2015/06/30 职场文书
施工安全责任协议书
2016/03/23 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
如何使用vue3打造一个物料库
2021/05/08 Vue.js
浅谈Web Storage API的使用
2021/06/23 Javascript
swagger如何返回map字段注释
2021/07/03 Java/Android