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 相关文章推荐
jquery ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
Js操作树节点自动折叠展开的几种方法
May 05 Javascript
JQuery datepicker 用法详解
Dec 25 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
Jan 07 Javascript
Javascript之String对象详解
Jun 08 Javascript
JS数组去掉重复数据只保留一条的实现代码
Aug 11 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
Feb 10 Javascript
详解VueJS 数据驱动和依赖追踪分析
Jul 26 Javascript
详解React中的组件通信问题
Jul 31 Javascript
浅谈Vue数据响应思路之数组
Nov 06 Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 Javascript
微信小程序8种数据通信的方式小结
Feb 03 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
我的论坛源代码(四)
2006/10/09 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
前端必学之PHP语法基础
2016/01/01 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
python和bash统计CPU利用率的方法
2015/07/10 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
不假外出检讨书
2014/01/27 职场文书
县级文明单位申报材料
2014/05/23 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
个人查摆剖析材料
2014/10/16 职场文书
公司年会开场白
2015/06/01 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python