AngularJS 中的常用特性(二)

3、列表、表格以及其他迭代型元素

  ng-repeat可能是最有用的 Angular 指令了,它可以根据集合中的项目一次创建一组元素的多份拷贝。

  比如一个学生名册系统需要从服务器上获取学生信息,目前先把模型之间定义在 JavaScript 代码里面:

1 var students = [{name: ‘Mary‘, id: ‘1‘},
2                     {name: ‘Jack‘, id: ‘2‘},
3                     {name: ‘Jill‘, id: ‘3‘}];
4     function StudentListController($scope) {
5         $scope.students = students;
6     }

  为了显示这个学生列表,可以编写如下代码:

1 <ul ng-controller="StudentListController">
2     <li ng-repeat="student in students">
3         <a href="/student/view/{{student.id}}">{{student.name}}</a>
4     </li>
5 </ul>

  ng-repeat 将会生成标签内部所有 HTML 元素的一份拷贝,包括放指令的标签,显示结果如下:

  

  根据具体情况分别链接到 /student/view/1、/student/view/2 以及 /student/view/3。

  ng-repeat 指令可以通过 $index 返回当前引用的元素序号(类似<s:iterator>标签中的 index),还可以通过 $first、$middle及 $last,ng-repeat 指令返回布尔值。

4、隐藏和显示

  对于菜单、上下文敏感的工具以及很多其他情况来说,显示和隐藏元素是一项核心功能。

  ng-show 和 ng-hide 指令的功能是等价的,但是运行效果正好相反。

  ng-show 在表达式为 true 时将会显示元素,为 false 时将会隐藏元素;而 ng-hide 则恰好相反。

  工作原理:根据实际情况把元素的样式设置为 display : block 来显示元素;设置为 display : none 来隐藏元素。

5、CSS 类和样式

  目前你已经可以在应用中动态地设置 CSS 类和样式了,只有使用{{  }}插值语法把它们进行数据绑定即可,甚至可以在模板中构造 CSS 类名的部分匹配方式。

.menu-disabled-true {
    color: gray;
}

  使用以下模板,可以将功能显示成禁用状态:

1 <div ng-controller="MenuController">
2     <ul>
3         <li class="menu-disabled-{{isDisabled}}" ng-click="DisabledIt()">Click</li>
4         ...
5     </ul>
6 </div>

  这样通过控制器来设置 isDisabled 属性:

1 function MenuController($scope) {
2     $scope.isDisabled = false;
3
4     $scope.disabledIt = function() {
5         $scope.isDisabled = true;
6     }
7 }

  这样,只有 isDisabled 为 true 时,拼接出来的才是 menu-disabled-true,CSS 样式才会起作用。

  当使用插值的方式绑定内联样式的时候,同样适用,例如 style = "{{some.expression}}"。

  但是由于这种方式并不灵活,后期维护困难,所以 Angular 中推荐使用 ng-class 和 ng-style 指令。

  这两个指令都可以接受一个表达式,表达式执行的结果可能是如下取值之一:

  • 表示 CSS 类名的字符串,以空格分隔
  • CSS 类名数组
  • CSS 类名到布尔值的映射

  我们可以如下实现显示错误和警告信息的功能:

 1 .error {
 2     background-color: red;
 3 }
 4 .warning {
 5     background-color: yellow;
 6 }
 7 <div ng-controller="HeaderController">
 8     ...
 9     <div ng-class="{error: isError, warning: isWarning}">{{messageText}}</div>
10     ...
11     <button ng-click="showError()">Simulate Error</button>
12     <button ng-click="showWarning()">Simulate Warning</button>
13 </div>
14 function HeaderController($scope) {
15     $scope.isError = false;
16     $scope.isWarning = false;
17
18     $scope.showError = function () {
19         $scope.messageText = ‘This is an error‘;
20         $scope.isError = true;
21         $scope.isWarning = false;
22     };
23
24     $scope.showWarning = function () {
25         $scope.messageText = ‘Just a warning, Please carry on.‘;
26         $scope.isWarning = true;
27         $scope.isError = false;
28     }
29 }

  你会发现这样实现的很优雅,而且容易维护,下面还可以做一个更炫的事情,例如,把表格中被选中的行进行高亮显示。

时间: 2024-10-28 16:21:04

AngularJS 中的常用特性(二)的相关文章

AngularJS 中的常用特性(一)

前言:AngularJS 是一款来自 Google 的前端 JS 框架,该框架已经被应用到了 Google 的多款产品中,这款框架最核心特性有:MVC.模块化.自动化双向数据绑定.语义化标签.依赖注入等待.而且,AngularJS 框架自身是通过 TDD(测试驱动)的方式开发的,从这个角度来看,AngularJS 是敏捷开发的一次成功实践. 引一段<AngularJS 深度剖析和最佳实践>中的话: Angular的学习曲线大概是这样的:入门非常容易,中级的时候会发现需要深入理解很多概念,高级的

AngularJS 中的常用特性(四)

11.使用 Module(模块) 组织依赖关系 Angular 里面的模板,提供了一种方法,可以用来组织应用中一块功能区域的依赖关系:同时还提供了一种机制,可以自动解析依赖关系(又叫依赖注入),一般来说,我们把这些叫做依赖服务,因为它们会负责为应用提供特殊的服务. 例如,如果购物站点中的一个控制器需要从服务器中获取一个商品列表 Items,来处理从服务器获取商品的工作.进而,Items 对象就需要以某种方式与服务器上的数据库进行交互,可以通过 XHR 或者 WebSocket. 如果,在没有模块

AngularJS 中的常用特性(三)

6.表达式  在模板中使用表达式是为了以充分的灵活性在模板.业务逻辑和数据之间建立联系,同时又能避免让业务逻辑渗透到模板中. 1 <div ng-controller="SomeController"> 2 <div>{{recompute() / 10}}</div> 3 <ul ng-repeat="thing in things"> 4 <li ng-class="{highlight: $ind

angularJs中的常用工具方法

前面说过在angularJs中使用 angular.module() 法可创建一个angularJs模块.除此之外,angularJs还提供了一些工具方法供我们使用. angular.isArray() //判断传入的参数是不是数组,是则返回true 否则返回false angular.isDate() //判断传入的参数是不是时间对象,是则返回true,否则返回false angular.isFunction() //判断传入的参数是不是函数,是则返回true,否则返回false angula

AngularJS学习--- AngularJS中XHR(AJAX)和依赖注入(DI) step5

前言:本文接前一篇文章,主要介绍什么是XHR,AJAX,DI,angularjs中如何使用XHR和DI. 1.切换工具目录 git checkout -f step-5 #切换分支 npm start #启动项目 2.什么是XHR和依赖注入(Dependency Injection)? 1)什么是XHR? XHR是XMLHttpRequest的简称,XMLHttpRequest 用于在后台与服务器交换数据,主要是为了实现在不重新加载整个网页的情况下,对网页的某部分进行更新.简单说,浏览器中URL

AngularJS 的常用特性(五)

13.使用路由和 $location 切换视图 对于一些单页面应用来说,有时候需要为用户展示或者隐藏一些子页面视图,可以利用 Angular 的 $route 服务来管理这种场景. 你可以利用路由服务来定义这样的一种东西:对于浏览器所指向的特定 URL,Angular 将会加载并显示一个模板,并实例化一个控制器来为模板提供内容. 在应用中可以调用 $routeProvider 服务上的函数来创建路由,把需要创建的路由当成一个配置块传给这些函数即可.伪代码如下: 1 var someModule

C#网络程序设计(1)网络编程常识与C#常用特性

    网络程序设计能够帮我们了解联网应用的底层通信原理!     (1)网络编程常识: 1)什么是网络编程 只有主要实现进程(线程)相互通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网络编程. 2)网络编程的层次 现实中的互联网是按照"TCP/IP分层协议栈"的体系结构构建的,因此程序员必须搞清楚自己要做的是哪个层次上的编程工作. TCP/IP协议体系的实现情况: 其中,网络接口层已经被大多数计算机生产厂家集成在了主板上,也就是经常所说的网卡(NIC).windows操

AngularJs中的directives(指令)

一.指令的职责   指令的职责是修改DOM结构,并将作用域和DOM连接起来.即指令既要操作DOM,将作用域内的数据绑定到DOM节点上,又要为DOM绑定事件调用作用域内的对应的方法. 二.创建自定义指令 调用自定义指令的4种方式:元素.属性.样式类.注释. 常用的是前两种,实例如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title>

黄聪:AngularJS中的$resource使用与Restful资源交互(转)

原文:http://blog.csdn.net/he90227/article/details/50525836 1.AngularJS中的 $resource 这个服务可以创建一个资源对象,我们可以用它非常方便地同支持RESTful的服务端数据源进行交互,当同支持RESTful的数据模型一起工作时,它就派上用场了.      REST是Representational State Transfer(表征状态转移)的缩写,是服务器用来智能化地提供数据服务的一种方式 1)我们首先需要引入ng-Re