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 相关文章推荐
让iframe自适应高度(支持XHTML,支持FF)
Jul 24 Javascript
JavaScript 自动完成脚本整理(33个)
Oct 20 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
Dec 26 Javascript
讨论html与javascript在浏览器中的加载顺序问题
Nov 27 Javascript
jquery等待效果示例
May 01 Javascript
React创建组件的三种方式及其区别
Jan 12 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
微信小程序选择图片和放大预览图片功能
Nov 02 Javascript
element-ui循环显示radio控件信息的方法
Aug 24 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
Apr 11 Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 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 cookis创建实现代码
2009/03/16 PHP
PHP写杨辉三角实例代码
2011/07/17 PHP
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
PHP闭包函数详解
2016/02/13 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
详解Vue CLI 3.0脚手架如何mock数据
2018/11/23 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
python技能之数据导出excel的实例代码
2017/08/11 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
python使用knn实现特征向量分类
2018/12/26 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
简历中个人自我评价范文
2013/12/26 职场文书
工程采购员岗位职责
2014/03/09 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
教室标语大全
2014/06/21 职场文书
python使用BeautifulSoup 解析HTML
2022/04/24 Python