Filter作用就是接收一個輸入,透過某個規則處理,然後傳回給使用者處理後的結果。 Filter可以用在模板、控制器、或服務,同時也會很容易自訂一個Filter過濾器。
在模板中使用Filter
Filter可以用來在視圖範本中使用一下語法運算式:
{{ expression | filter }}
例如:格式{{ 12 | currency }}是使用currency的filter用法,讓數字12過濾為貨幣形式,結果是$12.00。
Filter可以套用到另一個過濾的結果。這就是所謂的“chaining”,使用語法如下:
{{ expression | filter1 | filter2 | ... }}
Filter中可能需要參數。語法為:
{{ expression | filter:argument1:argument2:... }}
例如:格式{{ 1234 | number:2 }}是使用number的filter用法,將數字1234過濾為有兩位數小數點的數字,結果為:1,234.00 。
在controller、services、directives中使用filter
你可以在controller、services、directives中使用filter。
為此,你需要將依賴項名稱注入到你的controller/service/directive中:filter;例如:一個過濾器是number,你就需要透過使用依賴注入numberFilter。注入的參數是一個函數,該函數將值作為第一個參數,然後用第二個參數來篩選參數。
下面的範例使用了叫做filter的Filter過濾器。這個filter可以在sub arrays的基礎上減少arrays。也可以應用在視圖模板的標記,就像:{{ctrl.array|filter:'a'}},這將為‘a'做一個全文搜尋。然而,在視圖模板中使用filter將會重新對每一個filter過濾,如果數組比較大的會是載入多次的。
因此下面的範例直接呼叫在控制器中的filter。透過這個,控制器可以在需要是呼叫filter(例如:當後端資料載入時或filter的表達式改變時)。
index.html:
<div ng-controller="FilterController as ctrl"> <div> All entries: <span ng-repeat="entry in ctrl.array">{{entry.name}} </span> </div> <div> Entries that contain an "a": <span ng-repeat="entry in ctrl.filteredArray">{{entry.name}} </span> </div> </div>
script.js:
angular.module('FilterInControllerModule', []). controller('FilterController', ['filterFilter', function(filterFilter) { this.array = [ {name: 'Tobias'}, {name: 'Jeff'}, {name: 'Brian'}, {name: 'Igor'}, {name: 'James'}, {name: 'Brad'} ]; this.filteredArray = filterFilter(this.array, 'a'); }]);
結果為:
All entries: Tobias Jeff Brian Igor James Brad Entries that contain an "a": Tobias Brian James Brad
建立自訂filters:
寫自己的filter是非常簡單的:只需要在你的模組中註冊一個新的filter factory函數。在內部,這裡用了filterProvider。這個factory函數應該會傳回一個新的filter函數並且將輸入值作為第一個參數。任何過濾器參數都會作為附加參數傳遞到過濾器函數中。
這個濾波器函數應該是一個單純的函數。這意味著它應該stateless 和 idempotent。當輸入的函數變化時,angular依賴這些屬性並且執行filter。
注意:filter的名稱必須是有效的angular表達式識別碼。例如uppercase或orderBy。名字是不允許有特殊的字符,如連字符和點是不允許的。如果你希望你的濾鏡有名稱空間,那麼你可以使用大寫(myappSubsectionFilterx)或底線(myapp_subsection_filterx)。
下面的範例filter是反寫一個字串。另外,它可以再加一個條件使字串大寫。
index.html
<div ng-controller="MyController"> <input ng-model="greeting" type="text"><br> No filter: {{greeting}}<br> Reverse: {{greeting|reverse}}<br> Reverse + uppercase: {{greeting|reverse:true}}<br> Reverse, filtered in controller: {{filteredGreeting}}<br> </div>
script.js
angular.module('myReverseFilterApp', []) .filter('reverse', function() { return function(input, uppercase) { input = input || ''; var out = ""; for (var i = 0; i < input.length; i++) { out = input.charAt(i) + out; } // conditional based on optional argument if (uppercase) { out = out.toUpperCase(); } return out; }; }) .controller('MyController', ['$scope', 'reverseFilter', function($scope, reverseFilter) { $scope.greeting = 'hello'; $scope.filteredGreeting = reverseFilter($scope.greeting); }]);
結果為:
No filter: hello Reverse: olleh Reverse + uppercase: OLLEH Reverse, filtered in controller: olleh
有狀態的filters(Stateful filters)
強烈建議寫有狀態的filters,因為這些不能用angular進行最佳化,這往往會導致效能問題。許多有狀態的filters轉換成無狀態的filters僅僅透過揭露隱藏的狀態作為model,並且將其轉換為一個filter參數。
然而,如果你需要寫一個有狀態的filters,你必須將filter標記為$stateful,這也意味著它將在每一個$digest週期內執行一次或多次。
index,html
<div ng-controller="MyController"> Input: <input ng-model="greeting" type="text"><br> Decoration: <input ng-model="decoration.symbol" type="text"><br> No filter: {{greeting}}<br> Decorated: {{greeting | decorate}}<br> </div>
script.js:
angular.module('myStatefulFilterApp', []) .filter('decorate', ['decoration', function(decoration) { function decorateFilter(input) { return decoration.symbol + input + decoration.symbol; } decorateFilter.$stateful = true; return decorateFilter; }]) .controller('MyController', ['$scope', 'decoration', function($scope, decoration) { $scope.greeting = 'hello'; $scope.decoration = decoration; }]) .value('decoration', {symbol: '*'});
結果為:
No filter: hello Decorated: *hello*
下次會寫一篇angularjs中filter的常用用法。

VUE3是目前前端开发中较为流行的一种框架,其所提供的基础功能能够极大的提高前端开发效率。其中filters就是VUE3中一个非常有用的工具,使用filters可以很方便地对数据进行筛选、过滤和处理。那么什么是filters呢?简单来说,filters就是VUE3中的过滤器。它们可以用于处理被渲染的数据,以便在页面中呈现出更加理想的结果。filters是一些

Vue.js是一款流行的JavaScript框架,它提供了许多实用的功能和工具来帮助前端开发人员开发优秀的应用程序。其中,filters(过滤器)是Vue.js中一个非常有用的功能,它可以用于数据的格式化和过滤。在Vue中,filters相当于模板中的管道,可以用来对数据进行处理和转换。比如,我们可以使用filters把日期格式从原始日期

Javascript 是一个非常有个性的语言. 无论是从代码的组织, 还是代码的编程范式, 还是面向对象理论都独具一格. 而很早就在争论的Javascript 是不是面向对象语言这个问题, 显然已有答案. 但是, 即使 Javascript 叱咤风云二十年, 如果想要看懂 jQuery, Angularjs, 甚至是 React 等流行框架, 观看《黑马云课堂JavaScript 高级框架设计视频教程》就对了。

在如今信息时代,网站已经成为人们获取信息和交流的重要工具。一个响应式的网站能够适应各种设备,为用户提供优质的体验,成为了现代网站开发的热点。本篇文章将介绍如何使用PHP和AngularJS搭建一个响应式网站,从而提供优质的用户体验。PHP介绍PHP是一种开源的服务器端编程语言,非常适用于Web开发。PHP具有很多优点,如易于学习、跨平台、丰富的工具库、开发效

随着互联网的不断发展,Web应用已成为企业信息化建设的重要组成部分,也是现代化工作的必要手段。为了使Web应用能够便于开发、维护和扩展,开发人员需要选择适合自己开发需求的技术框架和编程语言。PHP和AngularJS是两种非常流行的Web开发技术,它们分别是服务器端和客户端的解决方案,通过结合使用可以大大提高Web应用的开发效率和使用体验。PHP的优势PHP

随着互联网的普及和发展,前端开发已变得越来越重要。作为前端开发人员,我们需要了解并掌握各种开发工具和技术。其中,PHP和AngularJS是两种非常有用和流行的工具。在本文中,我们将介绍如何使用这两种工具进行前端开发。一、PHP介绍PHP是一种流行的开源服务器端脚本语言,它适用于Web开发,可以在Web服务器和各种操作系统上运行。PHP的优点是简单、快速、便

随着互联网的普及,越来越多的人在使用网络进行文件传输和共享。然而,由于各种原因,使用传统的FTP等方式进行文件管理无法满足现代用户的需求。因此,建立一个易用、高效、安全的在线文件管理平台已成为了一种趋势。本文介绍的在线文件管理平台,基于PHP和AngularJS,能够方便地进行文件上传、下载、编辑、删除等操作,并且提供了一系列强大的功能,例如文件共享、搜索、

随着Web应用程序的普及,前端框架AngularJS变得越来越受欢迎。AngularJS是一个由Google开发的JavaScript框架,它可以帮助你构建具有动态Web应用程序功能的Web应用程序。另一方面,对于后端编程,PHP是非常受欢迎的编程语言。如果您正在使用PHP进行服务器端编程,那么结合AngularJS使用PHP将可以为您的网站带来更多的动态效


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。