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.pswp.cn/news/374643.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374643.shtml
英文地址,請注明出處:http://en.pswp.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…