AngularJs的UI组件ui-Bootstrap分享(三)——Accordion

Accordion手风琴控件使用uib-accordion和uib-accordion-group指令。

<script>
        angular.module(‘myApp‘, [‘ui.bootstrap‘]).controller(‘AccordionDemoCtrl‘, function ($scope) {
            $scope.oneAtATime = true;
            $scope.status = {
                isFirstOpen: true,
                isFirstDisabled: false
            };
        });
</script>
<uib-accordion close-others="oneAtATime">
            <uib-accordion-group heading="标题" is-open="status.isFirstOpen" is-disabled="status.isFirstDisabled">
                内容...
            </uib-accordion-group>
</uib-accordion>

效果为:

uib-accordion的属性:


属性名称


默认值


说明


close-others


true


展开一个面板时是否关闭其他面板


template-url


template/accordion/accordion.html


在ui-bootstrap-tpls-1.3.2.js文件中使用的模板名称

uib-accordion-group的属性:


属性名称


默认值


说明


heading


none


面板头部的标题


is-disabled


false


面板是否禁用


is-open


false


面板是否展开


panel-class


panel-default


可以使用Bootstrap的样式,如panel-primary, panel-success, panel-info,panel-warning,panel-danger等。必须为字符串。


template-url


uib/template/accordion/accordion-group.html


在ui-bootstrap-tpls-1.3.2.js文件中使用的模板名称

上例中的uib-accordion-group标题和内容都是直接写在视图中的,除此之外,uib-accordion-group还有其他几种使用方式:

1. 配合ng-repeat生成面板

$scope.groups = [
              {
                  title: ‘第一个面板‘,
                  content: ‘第一个面板的内容‘
              },
              {
                  title: ‘第二个面板‘,
                  content: ‘第二个面板的内容‘
              }
            ];
<uib-accordion-group heading="{{group.title}}" ng-repeat="group in groups">
                {{group.content}}
</uib-accordion-group>

效果为:

2. 面板中可以包含动态生成的内容

$scope.items = [‘Item 1‘, ‘Item 2‘, ‘Item 3‘];

$scope.addItem = function () {
      var newItemNo = $scope.items.length + 1;
      $scope.items.push(‘Item ‘ + newItemNo);
 };
<uib-accordion-group heading="动态内容">
                <button type="button" class="btn btn-default btn-sm" ng-click="addItem()">Add Item</button>
                <div ng-repeat="item in items">{{item}}</div>
</uib-accordion-group>

效果为:

点击Add Item按钮后,面板的内容增加了,面板的大小也会变化,适应新的内容。

3. 使用自定义模板

uib-accordion-group默认的模板是uib/template/accordion/accordion-group.html,模板内容包含在ui-bootstrap-tpls-1.3.2.js文件中,可以参考原生的模板内容写一个自定义模板,然后用template-url来引用。

4. 使用自定义的面板标题

如果面板的标题是简单的文本,使用heading属性就足够了。如果是复杂的内容,比如有图标,那么可以使用uib-accordion-heading

<uib-accordion-group is-open="status.open">
     <uib-accordion-heading>
         自定义的面板标题 <i class="pull-right glyphicon" ng-class="{‘glyphicon-chevron-down‘: status.open, ‘glyphicon-chevron-right‘: !status.open}"></i>
     </uib-accordion-heading>
     内容...
</uib-accordion-group>

效果为:

最后,贴上完整的代码:

 1 <!DOCTYPE html>
 2 <html ng-app="myApp" xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <link href="/Content/bootstrap.css" rel="stylesheet" />
 6     <title></title>
 7
 8     <script src="/Scripts/angular.js"></script>
 9     <script src="/Scripts/ui-bootstrap-tpls-1.3.2.js"></script>
10     <script>
11
12         angular.module(‘myApp‘, [‘ui.bootstrap‘]).controller(‘AccordionDemoCtrl‘, function ($scope) {
13             $scope.oneAtATime = true;
14
15             $scope.groups = [
16               {
17                   title: ‘第一个面板‘,
18                   content: ‘第一个面板的内容‘
19               },
20               {
21                   title: ‘第二个面板‘,
22                   content: ‘第二个面板的内容‘
23               }
24             ];
25
26             $scope.items = [‘Item 1‘, ‘Item 2‘, ‘Item 3‘];
27
28             $scope.addItem = function () {
29                 var newItemNo = $scope.items.length + 1;
30                 $scope.items.push(‘Item ‘ + newItemNo);
31             };
32
33             $scope.status = {
34                 isFirstOpen: true,
35                 isFirstDisabled: false
36             };
37         });
38
39     </script>
40
41 </head>
42 <body style="padding:10px;">
43     <div ng-controller="AccordionDemoCtrl">
44         <script type="text/ng-template" id="group-template.html">
45             <div class="panel {{panelClass || ‘panel-default‘}}">
46                 <div class="panel-heading">
47                     <h4 class="panel-title" style="color:#fa39c3">
48                         <a href tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" uib-accordion-transclude="heading">
49                             <span ng-class="{‘text-muted‘: isDisabled}">{{heading}}</span>
50                         </a>
51                     </h4>
52                 </div>
53                 <div class="panel-collapse collapse" uib-collapse="!isOpen">
54                     <div class="panel-body" style="text-align: right" ng-transclude></div>
55                 </div>
56             </div>
57         </script>
58
59         <div class="checkbox">
60             <label>
61                 <input type="checkbox" ng-model="oneAtATime">
62                 同一时间只展开一个面板
63             </label>
64         </div>
65         <uib-accordion close-others="oneAtATime">
66             <uib-accordion-group  heading="标题" is-open="status.isFirstOpen" is-disabled="status.isFirstDisabled">
67                 内容...
68             </uib-accordion-group>
69             <uib-accordion-group heading="{{group.title}}" ng-repeat="group in groups">
70                 {{group.content}}
71             </uib-accordion-group>
72             <uib-accordion-group heading="动态内容">
73                 <button type="button" class="btn btn-default btn-sm" ng-click="addItem()">Add Item</button>
74                 <div ng-repeat="item in items">{{item}}</div>
75             </uib-accordion-group>
76             <uib-accordion-group heading="Custom template" template-url="group-template.html">
77                 Hello
78             </uib-accordion-group>
79             <uib-accordion-group heading="提示面板" panel-class="panel-info">
80                 注意面板的颜色
81             </uib-accordion-group>
82             <uib-accordion-group is-open="status.open">
83                 <uib-accordion-heading>
84                     自定义的面板标题 <i class="pull-right glyphicon" ng-class="{‘glyphicon-chevron-down‘: status.open, ‘glyphicon-chevron-right‘: !status.open}"></i>
85                 </uib-accordion-heading>
86                 内容...
87             </uib-accordion-group>
88         </uib-accordion>
89     </div>
90
91 </body>
92 </html>

时间: 2024-12-15 00:10:12

AngularJs的UI组件ui-Bootstrap分享(三)——Accordion的相关文章

挂号平台首页开发(UI组件部分)

JQ插件模式开发UI组件 JQ插件开发方法: 1.$.extend() 扩展JQ(比较简单,功能略显不足) $.extend({ sayHello:function(){ console.log("hello~"); } }); $.sayHello(); 2.$.fn  向JQ添加新方法(这次选择这种方法) $.fn.blue=function(){ this.css("background","blue"); } $("div&qu

AngularJs的UI组件ui-Bootstrap分享(一)

最近几个月学习了AngularJs和扩展的UI组件,并在公司小组内做了一次分享交流,感觉很有收获,在此记录下个人的学习心得. 在一个实际的项目中,UI组件是必不可少的东西,然而由于你懂的原因,国内无法顺利访问AngularJs官网,关于AngularJs的UI组件国内资料很缺乏,本文就先介绍一下AngularJs最常用的UI组件——UI-Bootstrap 准备工作: 1.      既然UI-Bootstrap是Angularjs和Bootstrap的合体,那么它肯定要依赖于AngularJs

AngularJs的UI组件ui-Bootstrap分享(十四)——Carousel

原文地址:http://www.cnblogs.com/pilixiami/p/5724314.html Carousel指令是用于图片轮播的控件,引入ngTouch模块后可以在移动端使用滑动的方式使用轮播控件. <!DOCTYPE html> <html ng-app="ui.bootstrap.demo" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-eq

Android界面编程——Android高级UI组件(三)

Android界面编程 Android高级UI组件 2.4.1适配器组件 适配器的作用 适配器充当适配器控件和该视图数据之间的桥梁.适配器提供访问的数据项,并负责产生数据组中的每个项的视图. 常用的适配器 BaseAdapter:抽象类,具有较高的灵活性. ArrayAdapter:最为简单,智能展示一行文字. SimpleAdapter:有较好的扩充性,可以自定义出各种效果. SimpleCursorAdapter:主要用于操作数据库. 常用的适配器控制 适配器控件扩展自ViewAdapter

工作流,WEB框架,UI组件网络收集整理

工作流,WEB框架,UI组件网络收集整理 在博客园上逛了好多年,随手收录了一些工作流,WEB开发框架,UI组件,现在整理一下与大家分享. 由于个人能力与精力有限,望各位园友在评论中补充,我将全部整理到正文: ? 工作流篇 RoadFlow工作流(收费):                  http://www.cqroad.cn/WorkFlow 驰骋工作流引擎 ccflow                       https://www.oschina.net/p/ccflow YbSof

cocos2d-iphone 与 UI组件

http://zhidao.baidu.com/link?url=v9d7y2doWqcPhKz1lz8TkO7ZQfslg-e-55JE0XP9VdKJ0vHobcLPEAXaXjD2lD-TGmgnaRzRc1g38ho-vM5qu_ cocos2d-iphone 与 UI组件 2013-03-07 04:11嚣张→恨天  分类:其他编程语言 | 浏览 145 次  悬赏:15 coco2d如何在场景中 添加 UIsearchbar UItoolbar之类的UI组件 或者 框架自身怎么实现搜

Kendo UI常用示例汇总(三)

<Kendo UI Professional试用版下载> Kendo UI Professional 提供开源和商业两个版本.开源版 Kendo UI Core,有40+个框架和组件:商业版整合了之前的Kendo UI Web.Kendo UI Mobile 和 Kendo UI DataViz ,一共有70+个框架和组件.作为Kendo UI的升级版,Kendo UI Professional既可以开发网页版应用程序,也可以开发移动版应用程序,并且在性能上也有显著的优化和提升. Kendo

Docz 用 MDX 写 React UI 组件文档

Docz 用 MDX 写 React UI 组件文档 前言 为了提升开发效率,创建一套 UI 组件库是一种较为有效的方式之一:可以减少重复工作.提高可复用,所以现在越来越多团队开始创建自己的 UI 组件库.较早的 Twitter 的 Bootstrap 虽然只能称为 UI 库,但也大大提升了开发效率.后面 MVVM 大行其道 ,前端终于可以把 HTML.CSS.JS 放在一起开发包含 UI .交互真正意义上的组件了,现在有基于 React 的 Material-UI.国内阿里金服基于 React

目前流行前端几大UI框架 ----vue Vue的UI组件库

在前端项目开发过程中,总是会引入一些UI框架,已为方便自己的使用,很多大公司都有自己的一套UI框架,下面就是最近经常使用并且很流行的UI框架. 一.Mint UI 屏幕快照 2019-01-18 下午3.03.59.png Mint UI是 饿了么团队开发基于vue .js的移动端UI框架,它包含丰富的 CSS 和 JS 组件,能够满足日常的移动端开发需要. 官网:https://mint-ui.github.io/#!/zh-cn Github: https://github.com/Elem

Android UI组件进阶(2)——仿Windows对话框

Android UI组件进阶(2)--仿Windows对话框 在开始本章前先祝大家中秋节快乐哈,相信很多上班的朋友都是放三天假的哈! 有时间的话回家陪陪父母吧!树欲静而风不止,子欲养而亲不待!岁月不饶人! 好了,道理和祝福语就说到这里了,今天给大家准备的是模仿Windows风格对话框! 效果图: 相信大部分的AlertDialog都是下面这个样子的: 今天给大家讲解的对话框是下面这样的: 对比两种对话框,站在用户的角度,相信你更加钟情于第二种颜色鲜明的对话框 好了下面就开始讲解如何制作模仿win