AngularJS入門教程之過濾器詳解
在這一步你將學(xué)習(xí)到如何創(chuàng)建自己的顯示過濾器。
請重置工作目錄:
git checkout -f step-9
現(xiàn)在轉(zhuǎn)到一個手機詳細信息頁面。在上一步,手機詳細頁面顯示“true”或者“false”來說明某個手機是否具有特定的特性?,F(xiàn)在我們使用一個定制的過濾器來把那些文本串圖形化:√作為“true”;以及×作為“false”。來讓我們看看過濾器代碼長什么樣子。
步驟8和步驟9之間最重要的不同在下面列出。你可以在GitHub里看到完整的差別。
定制過濾器
為了創(chuàng)建一個新的過濾器,先創(chuàng)建一個phonecatFilters模塊,并且將定制的過濾器注冊給這個模塊。
app/js/filters.js
angular.module('phonecatFilters', []).filter('checkmark', function() { return function(input) { return input ? '\u2713' : '\u2718'; }; });
我們的過濾器命名為checkmark。它的輸入要么是true,要么是false,并且我們返回兩個表示true或false的unicode字符(\u2713和\u2718)。
現(xiàn)在我們的過濾器準備好了,我們需要將我們的phonecatFilters模塊作為一個依賴注冊到我們的主模塊phonecat上。
app/js/app/js
... angular.module('phonecat', ['phonecatFilters']). ...
模板
由于我們的模板代碼寫在app/js/filter.js文件中,所以我們需要在布局模板中引入這個文件。
app/index.html
... <script src="js/controllers.js"></script> <script src="js/filters.js"></script> ...
在AngularJS模板中使用過濾器的語法是:
{{ expression | filter }}
我們把過濾器應(yīng)用到手機詳細信息模板中:
app/partials/phone-detail.html
... <dl> <dt>Infrared</dt> <dd>{{phone.connectivity.infrared | checkmark}}</dd> <dt>GPS</dt> <dd>{{phone.connectivity.gps | checkmark}}</dd> </dl> ...
測試
過濾器和其他組件一樣,應(yīng)該被測試,并且這些測試實際上很容易完成。
test/unit/filtersSpec.js
describe('filter', function() { beforeEach(module('phonecatFilters')); describe('checkmark', function() { it('should convert boolean values to unicode checkmark or cross', inject(function(checkmarkFilter) { expect(checkmarkFilter(true)).toBe('\u2713'); expect(checkmarkFilter(false)).toBe('\u2718'); })); }); });
注意在執(zhí)行任何過濾器測試之前,你需要為phonecatFilters模塊配置我們的測試注入器。
執(zhí)行./scripts/test/sh運行測試,你應(yīng)該會看到如下的輸出:
Chrome: Runner reset. .... Total 4 tests (Passed: 4; Fails: 0; Errors: 0) (3.00 ms) Chrome 19.0.1084.36 Mac OS: Run 4 tests (Passed: 4; Fails: 0; Errors 0) (3.00 ms)
現(xiàn)在讓我們來練習(xí)一下AngularJS內(nèi)置過濾器,在index.html中加入如下綁定:
- {{ "lower cap string" | uppercase }}
- {{ {foo: "bar", baz: 23} | json }}
- {{ 1304375948024 | date }}
- {{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }}
我們也可以用一個輸入框來創(chuàng)建一個模型,并且將之與一個過濾后的綁定結(jié)合在一起。在index.html中加入如下代碼:
<input ng-model="userInput"> Uppercased: {{ userInput | uppercase }}
總結(jié)
現(xiàn)在你已經(jīng)知道了如何編寫和測試一個定制化插件,在步驟10中我們會學(xué)習(xí)如何用AngularJS繼續(xù)豐富我們的手機詳細信息頁面。
以上就是對AngularJS 過濾器的資料整理,后續(xù)繼續(xù)補充相關(guān)資料,謝謝大家對本站的支持!
相關(guān)文章
詳解如何在Angular應(yīng)用中發(fā)起HTTP?302 redirect
這篇文章主要介紹了如何在Angular應(yīng)用中發(fā)起HTTP 302 redirect詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12發(fā)布Angular應(yīng)用至生產(chǎn)環(huán)境的方法
這篇文章主要介紹了發(fā)布Angular應(yīng)用至生產(chǎn)環(huán)境的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12AngularJS入門教程之 XMLHttpRequest實例講解
本文主要講解 AngularJS XMLHttpRequest,這里給大家整理相關(guān)資料并提供實例代碼,有需要的小伙伴參考下2016-07-07AngularJS使用ng-options指令實現(xiàn)下拉框
這篇文章主要介紹了AngularJS使用ng-options指令實現(xiàn)下拉框效果,ng-option指令使用也很簡單,下文具體給大家說明,對angularjs 下拉框知識感興趣的朋友一起看下吧2016-08-08