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判断只能输入数字、字母等验证的方法(总结)
May 14 Javascript
浅析ajax请求json数据并用js解析(示例分析)
Jul 13 Javascript
js冒泡法和数组转换成字符串示例代码
Aug 14 Javascript
吐槽一下我所了解的Node.js
Oct 08 Javascript
JavaScript比较两个对象是否相等的方法
Feb 06 Javascript
基于jquery实现全屏滚动效果
Nov 26 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
Mar 09 Javascript
karma+webpack搭建vue单元测试环境的方法示例
May 24 Javascript
js实现鼠标点击页面弹出自定义文字效果
Dec 24 Javascript
JS实现瀑布流效果
Mar 07 Javascript
在antd Table中插入可编辑的单元格实例
Oct 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
python网络编程示例(客户端与服务端)
2014/04/24 Python
Python引用模块和查找模块路径
2016/03/17 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
Python 导入文件过程图解
2019/10/15 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
python实现查找所有程序的安装信息
2020/02/18 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
Python里面search()和match()的区别
2016/09/21 面试题
综合测评自我鉴定
2013/10/08 职场文书
财政局长个人总结
2015/03/04 职场文书
详解MySQL集群搭建
2021/05/26 MySQL
详解Flask开发技巧之异常处理
2021/06/15 Python