AngularJS折叠菜单实现方法示例


Posted in Javascript onMay 18, 2017

本文实例讲述了AngularJS折叠菜单实现方法。分享给大家供大家参考,具体如下:

<!DOCTYPE html>
<html>
  <head>
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="bootstrap.min.css" rel="external nofollow" >
    <script src="jquery.min.js"></script>
    <script src="angular.min.js"></script>
    <script src="bootstrap.min.js"></script>
    <script type="text/javascript">
      var expModule=angular.module('expanderModule',[])
      expModule.directive('accordion', function() {
        return {
          restrict : 'EA',
          replace : true,
          transclude : true,
          template : '<div ng-transclude></div>',
          controller : function() {
            var expanders = [];
            this.gotOpened = function(selectedExpander) {
              angular.forEach(expanders, function(expander) {
                if (selectedExpander != expander) {
                  expander.showMe = false;
                }
              });
            }
            this.addExpander = function(expander) {
              expanders.push(expander);
            }
          }
        }
      });
      expModule.directive('expander', function() {
        return {
          restrict : 'EA',
          replace : true,
          transclude : true,
          require : '^?accordion',
          scope : {
            title : '=expanderTitle'
          },
          template : '<div>'
               + '<div class="title" ng-click="toggle()">{{title}}</div>'
               + '<div class="body" ng-show="showMe" ng-transclude></div>'
               + '</div>',
          link : function(scope, element, attrs, accordionController) {
            scope.showMe = false;
            accordionController.addExpander(scope);
            scope.toggle = function toggle() {
              scope.showMe = !scope.showMe;
              accordionController.gotOpened(scope);
            }
          }
        }
      });
      expModule.controller("SomeController",function($scope) {
        $scope.expanders = [{
          title : '1',
          text : '1.1.'
        }, {
          title : '2',
          text : '2.2'
        }, {
          title : '3',
          text : '3.3'
        }];
      });
    </script>
    <style type="text/css">
      .expander {
        border: 1px solid black;
        width: 250px;
      }
      .expander>.title {
        background-color: black;
        color: white;
        padding: .1em .3em;
        cursor: pointer;
      }
      .expander>.body {
        padding: .1em .3em;
      }
    </style>
  </head>
  <body ng-app="expanderModule" ng-controller='SomeController'>
    <accordion>
      <expander class='expander' ng-repeat='expander in expanders' expander-title='expander.title'>
        {{expander.text}}
      </expander>
    </accordion>
  </body>
</html>

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
js相册效果代码(点击创建即可)
Apr 16 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
Aug 03 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
Sep 12 Javascript
关于img的href和src取变量及赋值的方法
Apr 28 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
js完美解决IE6不支持position:fixed的bug
Apr 24 Javascript
JQuery Mobile 弹出式登录框的实现方法
May 28 Javascript
全面了解javascript中的错误处理机制
Jul 18 Javascript
JavaScript中的遍历详解(多种遍历)
Apr 07 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
leaflet加载geojson叠加显示功能代码
Feb 21 Javascript
JS正则表达式常见函数与用法小结
Apr 13 Javascript
jQuery Validate 校验多个相同name的方法
May 18 #jQuery
easyUI下拉列表点击事件使用方法
May 18 #Javascript
AngularJS自定义指令之复制指令实现方法
May 18 #Javascript
AngularJS使用ng-class动态增减class样式的方法示例
May 18 #Javascript
Vue中img的src属性绑定与static文件夹实例
May 18 #Javascript
JS验证全角与半角及相互转化的介绍
May 18 #Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 #Javascript
You might like
第六节 访问属性和方法 [6]
2006/10/09 PHP
在WIN98下以apache模块方式安装php
2006/10/09 PHP
解析argc argv在php中的应用
2013/06/24 PHP
php+mysql数据库实现无限分类的方法
2014/12/12 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
2014/03/04 Javascript
js动态删除div元素基本思路及实现代码
2014/05/08 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
wxpython 学习笔记 第一天
2009/02/09 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
Python实战之制作天气查询软件
2019/05/14 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
火山动力Java笔试题
2014/06/26 面试题
认真学习保证书
2015/02/26 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
python 如何用terminal输入参数
2021/05/25 Python