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网页图片按比例自适应缩放实现方法
Jan 15 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
May 13 Javascript
Javascript中的Callback方法浅析
Mar 15 Javascript
jQuery使用addClass()方法给元素添加多个class样式
Mar 26 Javascript
javascript封装简单实现方法
Aug 11 Javascript
js简单倒计时实现代码
Apr 30 Javascript
原生JS:Date对象全面解析
Sep 06 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
Jan 29 Javascript
vue-cli单页应用改成多页应用配置详解
Jul 14 Javascript
基于Webpack4和React hooks搭建项目的方法
Feb 05 Javascript
微信小程序可滑动周日历组件使用详解
Oct 21 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的大小写敏感问题整理
2011/12/29 PHP
PHP编程风格规范分享
2014/01/15 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
JS实现日期加减的方法
2013/11/29 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
vue中v-model的应用及使用详解
2018/06/27 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
用Python进行基础的函数式编程的教程
2015/03/31 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
Python引用计数操作示例
2018/08/23 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
python变量命名的7条建议
2019/07/04 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
Python实现打印实心和空心菱形
2019/11/23 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
《再别康桥》教学反思
2014/02/12 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
保护校园环境倡议书
2015/04/28 职场文书
新郎新娘致辞
2015/07/31 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技