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+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
Mar 10 Javascript
JavaScript基本语法讲解
Jun 03 Javascript
详细解读JavaScript的跨浏览器事件处理
Aug 12 Javascript
基于javascript实现tab切换特效
Mar 29 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
Oct 24 Javascript
利用transition实现文字上下抖动的效果
Jan 21 Javascript
如何在 Vue.js 中使用第三方js库
Apr 25 Javascript
Bootstrap Table使用整理(二)
Jun 09 Javascript
npm 下载指定版本的组件方法
May 17 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
Aug 14 Javascript
详解Vue用cmd创建项目
Feb 12 Javascript
vue select 获取value和lable操作
Aug 28 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
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
php数据库操作model类(使用__call方法)
2016/11/16 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python格式化压缩后的JS文件的方法
2015/03/05 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
python3使用GUI统计代码量
2019/09/18 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
外国人聘用意向书
2014/04/01 职场文书
经典团队口号
2014/06/06 职场文书
励志演讲稿500字
2014/08/21 职场文书
自荐信格式模板
2015/03/27 职场文书
个人收入证明范本
2015/06/12 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript