AngularJS之Filter
前言
本節我們來講講AngularJS中主要的部分之一,那就是過濾器,當從後臺獲取到的資料呈現到檢視上時,此時可能需要對資料進行相應的轉換,此時我們可以透過過濾器在不同頁面進行不同資料的格式抓換,在AngularJS中有常見預設的過濾器,當然若不滿足所需,我們可以自定義過濾器。
AngularJS預設過濾器
列舉AngularJS中常見的過濾器,如下:
過濾器名稱 | 描述 | 例子 | |
currency | money格式化 | {{ p.price | currency}} | |
date | 日期格式化 | { p.orderDate | date : “dd MMM yyyy” }} {{ p.orderDate | date : “shortDate” }} |
|
json | 將JSON字串生成一個JSON物件 | ||
{{p | json}} | |||
number | 格式化數值並給出精確度位數 | {{ p.price | number : 0}} {{ p.price | number : 2}} |
|
uppercase lowercase |
大小寫轉換 | {{ p.city | lowercase }} {{ p.state | uppercase }} |
|
limitTo | 控制列表渲染資料 | ||
orderBy | 排序 | ||
預設過濾器示例
我們渲染一個產品列表並將產品名稱轉換為大寫,產品類別小寫,以及數量保留兩位小數等。
UI
產品個數 {{products.length}}
名稱 類別 供給日期 數量 價格 {{p.name | uppercase}} {{p.category | lowercase}} {{getExpiryDate(p.expiry) | date:"dd MMM yy"}} {{p.quantity | number:2 }} {{p.price | currency}}
JS
app.controller('FilterCtrl', function ($scope) { $scope.products = [ { name: "Sony LED", category: "TV", price: 40000, quantity:10, expiry: 30 }, { name: "Vivo xplay5", category: "Mobile", price: 35640, quantity: 08, expiry: 21 }, { name: "LeTv", category: "TV", price: 36000, quantity: 5, expiry: 50 }, { name: "Iphone 6 plus", category: "Mobile", price: 55000, quantity: 6, expiry: 60 }, { name: "Galaxy s7 edge", category: "Mobile", price: 45000, quantity: 15, expiry: 50 }, ]; $scope.getExpiryDate = function (days) { var now = new Date(); return now.setDate(now.getDate() + days); } });
最後生成如下:
自定義過濾器示例
AngularJS不僅僅支援內部自構建的過濾器,而且還可以自定義過濾器來滿足我們所需,若自定義過濾器此時我們需要 透過module.filter來實現,實際上內部是透過FilterProvider來實現。module.filter這個方法有兩個引數,一個是需要建立的過濾器的名稱,另外一個是建立一個factory函式來使得該自定義過濾器生效或者工作。
接下來我們實現一個自定義過濾器,該過濾器帶一個引數,實現了再對照程式碼就明朗了。如下:
app.filter("properCase", function () { return function (value, reverse) { if (angular.isString(value)) { var intermediate = reverse == false ? value.toUpperCase() : value.toLowerCase(); return (reverse == false ? intermediate[0].toLowerCase() : intermediate[0].toUpperCase()) + intermediate.substr(1); } else { return value; } }; });
接下來在檢視中將繫結的名稱和類別修改成如下:
{{p.name | properCase}} {{p.category | properCase : false}}
結果如下:
混合過濾器示例
當進行渲染資料時,有可能需要進行多次過濾此時我們就需要建立多個自定義過濾器或者內建過濾器和自定義過濾器混合使用。
我們首先對列表透過name來orderby一下,然後透過自定義過濾器移除前兩條資料。
app.filter("skipRec", function () { return function (data, count) { if (angular.isArray(data) && angular.isNumber(count)) { if (count > data.length || count此時檢視頁面迴圈列表時我們將修改成如下:
....... 最終我們得到的結果如下:
總結
本節我們學習了AngularJS的過濾器,然後對預設過濾器、自定義過濾器以及混合過濾器統一進了相應的示例說明來加深理解,我們下節再見。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3486/viewspace-2800509/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AngularJS核心之DirectiveAngularJS
- AngularJS之Scope及ControllerAngularJSController
- 【轉】ionic之AngularJS手勢事件AngularJS事件
- Angularjs——初識AngularJSAngularJS
- spring cloud gateway之filter篇SpringCloudGatewayFilter
- Tomcat Filter之動態注入TomcatFilter
- AngularJS(二、如何用AngularJS建立前端程式碼框架)AngularJS前端框架
- Elasticsearch 之 Filter 與 Query 有啥不同?ElasticsearchFilter
- AngularJS整理(1.0.0)AngularJS
- 初識AngularJSAngularJS
- HBase Filter 過濾器之 ValueFilter 詳解Filter過濾器
- Java安全之Filter許可權繞過JavaFilter
- AngularJS 4(三)【指令】AngularJS
- AngularJS 4(五)【管道】AngularJS
- AngularJS 4(七)【路由】AngularJS路由
- AngularJS快速開始AngularJS
- Angularjs基礎知識之ng-show和ng-hideAngularJSIDE
- JavaWeb開發之Filter中的dispatcher標籤JavaWebFilter
- 理解Swift高階函式之map, filter, reduceSwift函式Filter
- Spring Cloud Gateway實戰之五:內建filterSpringCloudGatewayFilter
- Angularjs 學習總結AngularJS
- Angularjs的工程化AngularJS
- JavaScript filter()JavaScriptFilter
- Logcat filterGCFilter
- gateway filterGatewayFilter
- Filter管道Filter
- Angularjs學習筆記指令AngularJS筆記
- AngularJS動態設定CSSAngularJSCSS
- WebAPI Angularjs 上傳檔案WebAPIAngularJS
- AngularJS 4(一)【搭建環境】AngularJS
- AngularJS 4(四)【HTTP 服務】AngularJSHTTP
- AngularJS 4(六)【依賴注入】AngularJS依賴注入
- 優化Angularjs的$watch方法優化AngularJS
- python常用函式進階(2)之map,filter,reduce,zipPython函式Filter
- 文章來源:AngularJS 1.x系列:AngularJS服務-Service、Factory、Provider、Value及Constant(5)AngularJSIDE
- PHP程式碼審計02之filter_var()函式缺陷PHPFilter函式
- Java安全之基於Tomcat的Filter型記憶體馬JavaTomcatFilter記憶體
- HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter路由Filter