【17】AngularJS Bootstrap
AngularJS Bootstrap
AngularJS 的首选样式表是 Twitter Bootstrap, Twitter Bootstrap 是目前最受欢迎的前端框架。
Bootstrap
你可以在你的 AngularJS 应用中加入 Twitter Bootstrap,你可以在你的 <head>元素中添加如下代码:
- <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
如果站点在国内,建议使用百度静态资源库的Bootstrap,代码如下:
- <link rel="stylesheet" href="//apps.bdimg.com/libs/bootstrap/3.2.0/css/bootstrap.min.css">
以下是一个完整的 HTML 实例, 使用了 AngularJS 指令和 Bootstrap 类。
HTML 代码
- <!DOCTYPE html>
- <html>
- <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.2.0/css/bootstrap.min.css">
- <script src="http://apps.bdimg.com/libs/angular.js/1.3.9/angular.min.js"></script>
- <body ng-app="myApp" ng-controller="userCtrl">
- <div class="container">
- <h3>Users</h3>
- <table class="table table-striped">
- <thead><tr>
- <th>Edit</th>
- <th>FirstName</th>
- <th>LastName</th>
- </tr></thead>
- <tbody><tr ng-repeat="user in users">
- <td>
- <button class="btn" ng-click="editUser(user.id)">
- <span class="glyphicon glyphicon-pencil"></span>  Edit
- </button>
- </td>
- <td>{{ user.fName }}</td>
- <td>{{ user.lName }}</td>
- </tr></tbody>
- </table>
- <hr>
- <button class="btn btn-success" ng-click="editUser('new')">
- <span class="glyphicon glyphicon-user"></span>CreateNewUser
- </button>
- <hr>
- <h3 ng-show="edit">CreateNewUser:</h3>
- <h3 ng-hide="edit">EditUser:</h3>
- <form class="form-horizontal">
- <div class="form-group">
- <label class="col-sm-2 control-label">FirstName:</label>
- <div class="col-sm-10">
- <input type="text" ng-model="fName" ng-disabled="!edit" placeholder="First Name">
- </div>
- </div>
- <div class="form-group">
- <label class="col-sm-2 control-label">LastName:</label>
- <div class="col-sm-10">
- <input type="text" ng-model="lName" ng-disabled="!edit" placeholder="Last Name">
- </div>
- </div>
- <div class="form-group">
- <label class="col-sm-2 control-label">Password:</label>
- <div class="col-sm-10">
- <input type="password" ng-model="passw1" placeholder="Password">
- </div>
- </div>
- <div class="form-group">
- <label class="col-sm-2 control-label">Repeat:</label>
- <div class="col-sm-10">
- <input type="password" ng-model="passw2" placeholder="Repeat Password">
- </div>
- </div>
- </form>
- <hr>
- <button class="btn btn-success" ng-disabled="error || incomplete">
- <span class="glyphicon glyphicon-save"></span>SaveChanges
- </button>
- </div>
- <script src ="myUsers.js"></script>
- </body>
- </html>
指令解析
| AngularJS 指令 | 描述 | 
|---|---|
| <html ng-app | 为 <html> 元素定义一个应用(未命名) | 
| <body ng-controller | 为 <body> 元素定义一个控制器 | 
| <tr ng-repeat | 循环 users 对象数组,每个 user 对象放在 <tr> 元素中。 | 
| <button ng-click | 当点击 <button> 元素时调用函数 editUser() | 
| <h3 ng-show | 如果 edit = true 显示 <h3> 元素 | 
| <h3 ng-hide | 如果 edit = true 隐藏 <h3> 元素 | 
| <input ng-model | 为应用程序绑定 <input> 元素 | 
| <button ng-disabled | 如果发生错误或者 ncomplete = true 禁用 <button> 元素 | 
Bootstrap 类解析
| 元素 | Bootstrap 类 | 定义 | 
|---|---|---|
| <div> | container | 内容容器 | 
| <table> | table | 表格 | 
| <table> | table-striped | 带条纹背景的表格 | 
| <button> | btn | 按钮 | 
| <button> | btn-success | 成功按钮 | 
| <span> | glyphicon | 字形图标 | 
| <span> | glyphicon-pencil | 铅笔图标 | 
| <span> | glyphicon-user | 用户图标 | 
| <span> | glyphicon-save | 保存图标 | 
| <form> | form-horizontal | 水平表格 | 
| <div> | form-group | 表单组 | 
| <label> | control-label | 控制器标签 | 
| <label> | col-sm-2 | 跨越 2 列 | 
| <div> | col-sm-10 | 跨越 10 列 | 
JavaScript 代码
myUsers.js
- angular.module('myApp',[]).controller('userCtrl',function($scope){
- $scope.fName ='';
- $scope.lName ='';
- $scope.passw1 ='';
- $scope.passw2 ='';
- $scope.users =[
- {id:1, fName:'Hege', lName:"Pege"},
- {id:2, fName:'Kim', lName:"Pim"},
- {id:3, fName:'Sal', lName:"Smith"},
- {id:4, fName:'Jack', lName:"Jones"},
- {id:5, fName:'John', lName:"Doe"},
- {id:6, fName:'Peter',lName:"Pan"}
- ];
- $scope.edit =true;
- $scope.error =false;
- $scope.incomplete =false;
- $scope.editUser =function(id){
- if(id =='new'){
- $scope.edit =true;
- $scope.incomplete =true;
- $scope.fName ='';
- $scope.lName ='';
- }else{
- $scope.edit =false;
- $scope.fName = $scope.users[id-1].fName;
- $scope.lName = $scope.users[id-1].lName;
- }
- };
- $scope.$watch('passw1',function(){$scope.test();});
- $scope.$watch('passw2',function(){$scope.test();});
- $scope.$watch('fName',function(){$scope.test();});
- $scope.$watch('lName',function(){$scope.test();});
- $scope.test =function(){
- if($scope.passw1 !== $scope.passw2){
- $scope.error =true;
- }else{
- $scope.error =false;
- }
- $scope.incomplete =false;
- if($scope.edit &&(!$scope.fName.length ||
- !$scope.lName.length ||
- !$scope.passw1.length ||!$scope.passw2.length)){
- $scope.incomplete =true;
- }
- };
- });
JavaScript 代码解析
| Scope 属性 | 用途 | 
|---|---|
| $scope.fName | 模型变量 (用户名) | 
| $scope.lName | 模型变量 (用户姓) | 
| $scope.passw1 | 模型变量 (用户密码 1) | 
| $scope.passw2 | 模型变量 (用户密码 2) | 
| $scope.users | 模型变量 (用户的数组) | 
| $scope.edit | 当用户点击创建用户时设置为true。 | 
| $scope.error | 如果 passw1 不等于 passw2 设置为 true | 
| $scope.incomplete | 如果每个字段都为空(length = 0)设置为 true | 
| $scope.editUser | 设置模型变量 | 
| $scope.watch | 监控模型变量 | 
| $scope.test | 验证模型变量的错误和完整性 | 

【17】AngularJS Bootstrap的更多相关文章
- 企业IT管理员IE11升级指南【17】—— F12 开发者工具
		企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ... 
- 【2】认识Bootstrap
		作为当下最流行的前端开发框架Bootstrap,它可大大简化网站开发过程,从而深受广大开发者的喜欢,当然你去它的官网中文网站就能看到大大的小标定义:“简洁.直观.强悍.移动设备优先的前端开发框架,让w ... 
- 【6】了解Bootstrap栅格系统基础案例(1)
		从上一张我们了解了栅格选项,那么我们就来了实战了解下吧(其实还是中文官网的案例) ps.我这里是电脑上用谷歌浏览器来观察的,毕竟电脑的分辨率高(1440*900px),谷歌浏览器最大化后,值比大屏幕设 ... 
- 【5】了解Bootstrap预置的栅格系统
		在开篇之前我们来说2个class,因为以后要用到的 <div class="container"> ... </div> 用.container包裹页面上的 ... 
- Selenium3自动化测试【17】元素定位之Link定位
		Link定位 find_element_by_link_text方法是通过文本链接来定位元素. 以Bing首页中顶部的[学术]链接为例,如图所示. 查看对应的html代码.从html中我们能看出这是一 ... 
- 【转】angularjs指令中的compile与link函数详解
		这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下 通常大家在 ... 
- 【转】让Bootstrap 3兼容IE8浏览器
		FROM : http://www.ijophy.com/2014/05/bootstrap3-compatible-with-ie8.html 最近在研究Bootstrap(官方,Github)这个 ... 
- 【转】利用 Bootstrap 进行快速 Web 开发
		原文转自:http://blog.jobbole.com/53961/ 了解如何使用 Bootstrap 快速开发网站和 Web 应用程序(包括移动友好型应用程序).Bootstrap 以 LESS ... 
- 【经验】Angularjs 中使用 layDate 日期控件
		layDate 控件地址:http://laydate.layui.com/ 前情:原来系统中使用的日期控件是UI bootstrap(地址:https://angular-ui.github.io/ ... 
随机推荐
- F5 SSLVPN 的安装问题
			WIN10下安装SSLVPN问题 1.右击计算机 -->选择管理-->查看安装的插件是否显示感叹号 2.如果显示感叹号-->则进行更新驱动-->>手动选择-->网络 ... 
- E20170609-ts
			algorithm n.算法 layout n. 布局,安排,设计; 布置图,规划图; resource n. 资源; 物力,财力; 办法; 智谋; partial adj. 部分的; 偏爱的; ... 
- 在Ubuntu中设置DNS域名服务器
			在Ubuntu中设置DNS域名服务器主要有四种方法: 一.设置全局静态DNS $ sudo vi /etc/resolvconf/resolv.conf.d/base(这个文件默认是空的),插入: n ... 
- robotframework - User key 操作
			一.用户关键字操作思路 a.创建model1资源 b.在model下创建用户关键字 - 循环 c.测试套件下创建test_case/case2 & 用户关键字 d.测试套件中导入Resourc ... 
- 编写第一Spring程序
			构建Spring项目 通过https://start.spring.io/来构建项目,在这里我选择了两个依赖,web 和 Actuator. 项目结构 通过eclipse导入项目,可以看到这是一个标准 ... 
- 232 Implement Queue using Stacks 用栈来实现队列
			使用栈来实现队列的如下操作: push(x) -- 将一个元素放入队列的尾部.pop() -- 从队列首部移除元素.peek() -- 返回队列首部的元素.empty() -- 返回队列是否为空.注意 ... 
- [转]MySQL存储过程
			转自:http://www.cnblogs.com/exmyth/p/3303470.html 14.1.1 创建存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE ... 
- A Python example for HiveServer2
			要做一个通过调用python来实现对hive server2 的连接.在网上搜索了很多资料,有些说的hive sever的,但是由于认证方式发生改变,行不通. 最后,找到了权威的说明(PS: 还是应该 ... 
- P2P 网络核心技术:Gossip 协议
			背景 Gossip protocol 也叫 Epidemic Protocol (流行病协议),实际上它还有很多别名,比如:“流言算法”.“疫情传播算法”等. 这个协议的作用就像其名字表示的意思一样, ... 
- Spark学习之RDD编程(2)
			Spark学习之RDD编程(2) 1. Spark中的RDD是一个不可变的分布式对象集合. 2. 在Spark中数据的操作不外乎创建RDD.转化已有的RDD以及调用RDD操作进行求值. 3. 创建RD ... 
