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 相关文章推荐
javascript实现轮显新闻标题链接
Aug 13 Javascript
关于javascript DOM事件模型的两件事
Jul 22 Javascript
Javascript 多浏览器兼容总结(实战经验)
Oct 30 Javascript
jQuery中replaceAll()方法用法实例
Jan 16 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
jQuery增加、删除及修改select option的方法
Aug 19 Javascript
vue的mixins属性详解
Mar 14 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
Apr 27 Javascript
nvm、nrm、npm 安装和使用详解(小结)
Jan 17 Javascript
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
利用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
一次编写,随处运行
2006/10/09 PHP
PHP Array交叉表实现代码
2010/08/05 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
Yii清理缓存的方法
2016/01/06 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
javascript实现日历效果
2019/06/17 Javascript
python实现百度关键词排名查询
2014/03/30 Python
Python Requests安装与简单运用
2016/04/07 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
Python多线程thread及模块使用实例
2020/04/28 Python
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
《最可爱的人》教学反思
2014/02/14 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
班主任寄语2015
2015/02/26 职场文书
专项资金申请报告
2015/05/15 职场文书
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android