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-classng-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 }

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

    首先,在 CSS 中设置一个样式:

1 .selected {
2   background-color: lightgreen;
3 }

  在模板中,我们把 ng-class 设置为 {selected: $index == selectedRow},当模型属性 selectedRow 的值等于 ng-repeat 中的 $index 时,selected 样式就会设置到对应的那一行。

1 <table ng-controller="RestaurantTableController">
2   <tr ng-repeat="restaurant in directory" ng-click="selectRestaurant($index)"
3      ng-class="{selected : $index == selectedRow}">
4     <td>{{restaurant.name}}</td>
5     <td>{{restaurant.cuisine}}</td>
6   </tr>
7 </table>

  创建控制器:

 1 var app = angular.module('app', []);2 3 app.controller('RestaurantTableController', function ($scope) {4     $scope.directory = [{name: 'The Handsome Heifer', cuisine: 'BBQ'},5         {name: 'Green\'s Green Greens', cuisine: 'Salads'},6         {name: 'House of Fine Fish', cuisine: 'Seafood'}];7 });8 9 $scope.selectRestaurant = function (row) {
10     $scope.selectedRow = row;
11 }

  显示效果如图:

特别感谢:《用 AngularJS 开发下一代 Web 应用》

转载于:https://www.cnblogs.com/JavaSubin/p/5515198.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ruby,Python和Java中的Web服务

今天&#xff0c;我不得不准备一些示例来说明Web服务是可互操作的。 因此&#xff0c;我已经使用Metro使用Java创建了一个简单的Web服务&#xff0c;并在Tomcat上启动了它。 然后尝试使用Python和Ruby消耗它们。 这是全部完成的过程… Java中的Web服务 我从Java中的简单Web服…

bzoj4199: [Noi2015]品酒大会

题面见http://uoj.ac/problem/131 一道后缀数组题 先求出height&#xff0c;然后从大到小枚举每个height。 然后对于每个height值&#xff0c;两端的集合中任意一对后缀的LCP都是这个height。 我们统计答案之后合并两端的集合&#xff0c;用并查集维护即可。 1 #include<cst…

css中position初解

positon:static|absolute|relative|fiexd 1、static为默认值&#xff0c;没有定位&#xff0c;元素出现在正常的文档流中&#xff0c;忽略left,right,top,bottom,i-index值。 2、absolute为绝对定位&#xff0c;通过left,top等值对元素进行定位&#xff0c;定位时如果父元素的p…

零XML的Spring配置

Tomasz Nurkiewicz是我们的JCG合作伙伴之一&#xff0c;也是Spring框架的坚定支持者&#xff0c;在他的最新文章中描述了如何在不使用XML的情况下配置Spring应用程序。 注解方法在顶部。 查看他的教程&#xff1a; 没有XML的Spring框架...根本&#xff01; 翻译自: https://ww…

用动画切换按钮的状态

用动画切换按钮的状态 效果 源码 https://github.com/YouXianMing/UI-Component-Collection // // BaseControl.h // BaseButton // // Created by YouXianMing on 15/8/27. // Copyright (c) 2015年 YouXianMing. All rights reserved. //#import <UIKit/UIKit.h> c…

iOS开发之学前了解

学iOS开发能做什么&#xff1f; iOS开发需要学习哪些内容&#xff1f; 先学习什么&#xff1f; 不管你是学习android开发还是iOS开发 都建议先学习UI&#xff0c;原因如下&#xff1a; UI是app的根基&#xff1a;一个app应该是先有UI界面&#xff0c;然后在UI的基础上增加实用功…

力扣gupiao

给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。…

Java相当好的隐私(PGP)

公钥加密 这篇文章讨论了PGP或“很好的隐私”。 PGP是常规加密和公用密钥加密的混合实现。 在详细介绍PGP之前&#xff0c;让我们先谈谈公钥加密。 与其他任何加密技术一样&#xff0c;公钥加密解决了通过不安全介质传输安全数据的问题。 即互联网。 结果&#xff0c;该方案的…

HDU 5691 Sitting in Line 状压dp

Sitting in Line题目连接&#xff1a; http://acm.hdu.edu.cn/showproblem.php?pid5691 Description 度度熊是他同时代中最伟大的数学家&#xff0c;一切数字都要听命于他。现在&#xff0c;又到了度度熊和他的数字仆人们玩排排坐游戏的时候了。游戏的规则十分简单&#xff0c…

hello oc

printf("Hello C\n"); //OC可以采用C语言的输出方式 printf("The number is %d\n",100);//%d 输出数字 printf("Hello %s\n","XiaoMing");//%s 输出字符 NSLog("Hello Objective-C"); //采用oc的输出&#xff0c;前面带了一…

Spring3 RESTful Web服务

Spring 3提供了对RESTful Web服务的支持。 在本教程中&#xff0c;我们将向您展示如何在Spring中实现RESTful Web服务 &#xff0c;或者如何将现有的Spring服务公开为RESTful Web服务 。 为了使事情变得更有趣&#xff0c;我们将从上一篇关于Spring GWT Hibernate JPA Infinisp…

zoj 3765 块状链表 OR splay

各种操作o(╯□╰)o...不过都挺简单&#xff0c;不需要lazy标记。 方法1&#xff1a;块状链表 块状链表太强大了&#xff0c;区间操作实现起来简单暴力&#xff0c;效率比splay稍微慢一点&#xff0c;内存开销小很多。 1 #include <iostream>2 #include <cstring>3…

【C#公共帮助类】 Image帮助类

大家知道&#xff0c;开发项目除了数据访问层很重要外&#xff0c;就是Common了&#xff0c;这里就提供了强大且实用的工具。 【C#公共帮助类】 Convert帮助类 Image类&#xff1a; using System; using System.Collections.Generic; using System.Text; using System.IO; usin…

Java泛型快速教程

泛型是Java SE 5.0引入的一种Java功能&#xff0c;在其发布几年后&#xff0c;我发誓那里的每个Java程序员不仅听说过它&#xff0c;而且已经使用过它。 关于Java泛型&#xff0c;有很多免费和商业资源&#xff0c;而我使用的最佳资源是&#xff1a; Java教程 Java泛型和集合…

876. 链表的中间结点

给定一个头结点为 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点 代码一&#xff1a; 自己想的一个方法 class Solution {public ListNode middleNode(ListNode head) {ListNode p1 head;ListNode p2 head;//i,j…

Hive查询Join

Select a.val,b.val From a [Left|Right|Full Outer] Join b On (a.keyb.key); 现有两张表&#xff1a;sales 列出了人名及其所购商品的 ID&#xff1b;things 列出商品的 ID 和名称&#xff1a; hive> select * from sales; OK Joe 2 Hank 4 Ali 0 Eve 3 Ha…

jquery 获取easyui combobox选中的值

$(#comboboxlist).combobox(getValue);转载于:https://www.cnblogs.com/ftm-datablogs/p/5526857.html

调度Java应用程序中的主体

许多项目需要计划功能&#xff0c;例如我们计划的工作&#xff0c;重复的工作&#xff0c;异步执行等。 我们的首选方法是使用企业工作调度程序&#xff0c;例如OpenSymphony的Quartz。 使用计划任务进行编码时&#xff0c;最棘手的部分之一是执行部分。 这里的主要经验法则是…

继承映射关系 joinedsubclass的查询

会出现下面这样的错一般是配置文件中的mapping和映射文件中的package路径或者class中的name路径不一致 org.hibernate.MappingException: Unknown entity: com.zh.hibernate.joinedsubclass.Student at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(Sessi…

Spark系列—02 Spark程序牛刀小试

一、执行第一个Spark程序 1、执行程序 我们执行一下Spark自带的一个例子&#xff0c;利用蒙特卡罗算法求PI&#xff1a; 启动Spark集群后&#xff0c;可以在集群的任何一台机器上执行一下命令&#xff1a; /home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-submit \ --class o…