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 相关文章推荐
GreyBox技术总结(转)
Nov 23 Javascript
20款超赞的jQuery插件 Web开发人员必备
Feb 26 Javascript
JavaScript表达式:URL 协议介绍
Mar 10 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
Jul 22 Javascript
Vue.js每天必学之内部响应式原理探究
Sep 07 Javascript
Vue.js一个文件对应一个组件实践
Oct 27 Javascript
AngularJS实现根据变量改变动态加载模板的方法
Nov 04 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
Aug 04 Javascript
实现jquery放大镜的两种方法
Feb 22 jQuery
详解JS中统计函数执行次数与执行时间
Sep 04 Javascript
vue选项卡切换登录方式小案例
Sep 27 Javascript
JavaScript实现点击出现子菜单效果
Feb 08 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 INI配置文件的解析实现分析
2011/01/04 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
JS前端加密算法示例
2016/12/22 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
Python实现统计单词出现的个数
2015/05/28 Python
python实现函数极小值
2019/07/10 Python
numpy数组广播的机制
2019/07/12 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
python实现与redis交互操作详解
2020/04/21 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
承诺书范本
2015/01/21 职场文书
学校社团活动总结
2015/05/07 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis