AngularJs的UI组件ui-Bootstrap分享(七)——Buttons和Dropdown

原文地址:http://www.cnblogs.com/pilixiami/p/5636218.html

在ui-Bootstrap中,Buttons控件和Dropdown控件与form表单中的按钮和下拉框名字很像,但实际上这两个控件有新的含义。

先说Buttons,它是一组按钮,用来实现form表单中的单选框和复选框的功能,样式上可以自定义,功能也可以扩展,可以替代单选框和复选框。

<!DOCTYPE html>
<html ng-app="ui.bootstrap.demo" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="/Content/bootstrap.css" rel="stylesheet" />
    <title></title>

    <script src="/Scripts/angular.js"></script>
    <script src="/Scripts/ui-bootstrap-tpls-1.3.2.js"></script>
    <script>
        angular.module(‘ui.bootstrap.demo‘, [‘ui.bootstrap‘]).controller(‘ButtonsCtrl‘, function ($scope) {
            $scope.singleModel = 1;

            $scope.radioModel = ‘Middle‘;

            $scope.checkModel = {
                left: false,
                middle: true,
                right: false
            };

            $scope.checkResults = [];

            $scope.$watchCollection(‘checkModel‘, function () {
                $scope.checkResults = [];
                angular.forEach($scope.checkModel, function (value, key) {
                    if (value) {
                        $scope.checkResults.push(key);
                    }
                });
            });
        });
    </script>

</head>
<body>
    <div ng-controller="ButtonsCtrl">
        <h4>复选框</h4>
        <pre>Results: {{checkResults}}</pre>
        <div class="btn-group">
            <label class="btn btn-primary" ng-model="checkModel.left" uib-btn-checkbox>Left</label>
            <label class="btn btn-primary" ng-model="checkModel.middle" uib-btn-checkbox>Middle</label>
            <label class="btn btn-primary" ng-model="checkModel.right" uib-btn-checkbox>Right</label>
        </div>
        <h4>单选框</h4>
        <pre>{{radioModel || ‘null‘}}</pre>
        <div class="btn-group">
            <label class="btn btn-primary" ng-model="radioModel" uib-btn-radio="‘Left‘">Left</label>
            <label class="btn btn-primary" ng-model="radioModel" uib-btn-radio="‘Middle‘">Middle</label>
            <label class="btn btn-primary" ng-model="radioModel" uib-btn-radio="‘Right‘">Right</label>
        </div>
    </div>
</body>
</html>

buttons控件使用uib-btn-checkbox和uib-btn-radio指令,这两个指令可以加在<input >上,也可以加在<button>上,甚至可以加在<lable>上。

对于复选框,可以设置btn-checkbox-false和btn-checkbox-true表示复选框未选中和选中时的值(默认是false和true)。

对于单选框,一组单选框需要绑定同一个ng-model,并且使用uib-btn-radio指定单选框选中时的值。

单选框还有两个可选的属性:


属性名


默认值


备注


uncheckable


增加这个属性表示单选框选中状态下再次点击时,单选框变为未选中(单选框变成复选框了)


uib-uncheckable


null


为true时效果等于增加uncheckable属性

再说Dropdown,从外观上看似乎是表单控件<select>

但是实际上这个控件的主要功能是做导航菜单,因此在模板中使用button和ul元素的组合来表现菜单项。

<!DOCTYPE html>
<html ng-app="ui.bootstrap.demo" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="/Content/bootstrap.css" rel="stylesheet" />
    <title></title>

    <script src="/Scripts/angular.js"></script>
    <script src="/Scripts/ui-bootstrap-tpls-1.3.2.js"></script>
    <script>
        angular.module(‘ui.bootstrap.demo‘, [‘ui.bootstrap‘]).controller(‘DropdownCtrl‘, function ($scope) {

        });
    </script>

</head>
<body>
    <div ng-controller="DropdownCtrl">
        <div class="btn-group" uib-dropdown ng-init="dropdownItems=[‘第一项‘,‘第二项‘,‘第三项‘]">
            <button id="single-button" type="button" class="btn btn-primary" uib-dropdown-toggle >
                请选择 <span class="caret"></span>
            </button>
            <ul class="dropdown-menu" uib-dropdown-menu  >
                <li ng-repeat="item in dropdownItems">
                    <a href="#">{{item}}</a>
                </li>
                <li class="divider"></li>
                <li ><a href="#">其他</a></li>
            </ul>
        </div>
    </div>
</body>
</html>

具体来说,dropdown包括三部分:

1. uib-dropdown 表示当前元素是一个菜单

2. uib-dropdown-toggle 一个展开/收起菜单的按钮。这是可选的部分。

3. uib-dropdown-menu 表示具体的菜单项

uib-dropdown的属性有:


属性名


默认值


备注


auto-close


always


可设置的值有三个:

1 always,点击菜单后自动关闭

2 disabled,不自动关闭,使用is-open手动控制。

3 outsideClick,点击Dropdown外部的元素时关闭。


dropdown-append-to


null


将菜单项(ul部分)放在其他DOM元素中,而不是包含在uib-dropdown所在的元素中


dropdown-append-to-body


false


将菜单项(ul部分)放在body末尾,而不是包含在uib-dropdown所在的元素中


is-open


false


菜单是否展开。uib-dropdown-toggle所在的元素点击时会更改这个值。


keyboard-nav


false


是否允许方向键选择菜单


on-toggle


菜单展开或收起时触发的方法

uib-dropdown-menu可以使用template-url来自定义菜单项,比如这样:

<!DOCTYPE html>
<html ng-app="ui.bootstrap.demo" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="/Content/bootstrap.css" rel="stylesheet" />
    <title></title>

    <script src="/Scripts/angular.js"></script>
    <script src="/Scripts/ui-bootstrap-tpls-1.3.2.js"></script>
    <script>
        angular.module(‘ui.bootstrap.demo‘, [‘ui.bootstrap‘]).controller(‘DropdownCtrl‘, function ($scope) {

        });
    </script>

</head>
<body>
    <div ng-controller="DropdownCtrl">
        <div class="btn-group" uib-dropdown ng-init="dropdownItems=[‘第一项‘,‘第二项‘,‘第三项‘]" >
            <button id="single-button" type="button" class="btn btn-primary" uib-dropdown-toggle>
                请选择 <span class="caret"></span>
            </button>
            <ul class="dropdown-menu" uib-dropdown-menu template-url="dropdown.html">
            </ul>
        </div>
        <script type="text/ng-template" id="dropdown.html">
            <ul class="dropdown-menu" uib-dropdown-menu>
                <li ng-repeat="item in dropdownItems">
                    <a href="#">{{item}}</a>
                </li>
                <li class="divider"></li>
                <li><a href="#">其他</a></li>
            </ul>
        </script>
    </div>
</body>
</html>

其中这两个属性dropdown-append-to和dropdown- append-to-body可以将菜单项放在其他地方,这样设置其样式时会非常方便。这个用法和Datepicker Popup控件的datepicker-append-to-body属性是一样的。但是dropdown-append-to应该怎样设置才可以指定菜 单项迁移到的元素,还没有找到正确的方法,这里存疑。

另外,Dropdown还可以更改全局配置uibDropdownConfig,uibDropdownConfig的属性有:


属性名


默认值


备注


appendToOpenClass


uib-dropdown-open


当菜单展开并且移至其他dom元素中时所添加的类名


openClass


open


当菜单展开时添加的类名

更改全局配置的代码:

<script>
    angular.module(‘ui.bootstrap.demo‘, [‘ui.bootstrap‘])
        .config([‘uibDropdownConfig‘, function (uibDropdownConfig) {
            uibDropdownConfig.appendToOpenClass = ‘class1‘;
            uibDropdownConfig.openClass = ‘class2‘;
        }])
        .controller(‘DropdownCtrl‘, function ($scope) {

    });
</script>
时间: 2024-08-09 08:42:10

AngularJs的UI组件ui-Bootstrap分享(七)——Buttons和Dropdown的相关文章

挂号平台首页开发(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

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

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

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

React-Native入门指南(五)——UI组件

React-Native入门指南 github:https://github.com/vczero/react-native-lession React-Native:用JavaScript开发你的原生应用,释放Native的UI体验,体验 Hybird开发效率. 最近一个星期写的文章如下: 第1篇hello react-native 第2篇认识代码结构 第3篇css和布局 第4篇学会react-native布局 第5篇ui组件 还有几篇需要这这周完成(这块会时刻更新): 第6篇JSX语法 第7

推荐 11 款 React Native 开源移动 UI 组件

推荐 11 款 React Native 开源移动 UI 组件 oschina 发布于 10个月前,共有 14 条评论 本文推荐 11 个非常棒的 React Native 开源组件,希望能给移动应用开发者提供帮助. React Native 是近期 Facebook 基于 MIT 协议开源的原生移动应用开发框架,已经用于 Facebook 的生产环境.React Native 可以使用最近非常流行的 React.js 库来开发 iOS 和 Android 原生 APP. 1. iOS 表单处理

封装一个简单的UI组件

方法其实很简单,用一个函数把整个过程包起来.调用时用new,这样可以在一个页面使用多个改组件.这是一个非常简单的方法,后面还有很大改进的空间.下面是一个封装日历的示例. 现在我们的组件类似bootstrap,写好下面的html结构,然后引入ui.css和ui.js,就可以生成相应的UI组件了.效果如上图. <!doctype html> <html> <head> <meta charset="UTF-8"> <title>C

交互设计:隐藏或显示大段文本的UI组件有哪些?

应用场景: 在手机上要给列表中的每一项添加一个大段的介绍,应该用什么UI组件 A: 这里可以用,模态对话框,弹出提示,工具提示这类组件.模态对话框的好处,就是用关闭的按钮,用户操作方便:而弹出提示和工具提示只能通过点击来切换 模态对话框: http://v2.bootcss.com/javascript.html#modals http://www.runoob.com/bootstrap/bootstrap-modal-plugin.html Bootstrap 模态框(Modal)插件 模态