AngularJS Filters
可以在 AngularJS 中新增過濾器來格式化資料。
AngularJS Filters
AngularJS 提供過濾器來轉換資料
currency
將數字格式化為貨幣格式。date
將日期格式化為指定格式。filter
從陣列中選擇一個子集。json
將物件格式化為 JSON 字串。limitTo
將陣列/字串限制為指定數量的元素/字元。lowercase
將字串格式化為小寫。number
將數字格式化為字串。orderBy
按表示式對陣列進行排序。uppercase
將字串格式化為大寫。
向表示式新增過濾器
可以透過使用管道字元 |
,後跟過濾器,將過濾器新增到表示式中。
uppercase
過濾器將字串格式化為大寫
示例
<div ng-app="myApp" ng-controller="personCtrl">
<p>姓名是 {{ lastName | uppercase }}</p>
</div>
自己動手試一試 »
lowercase
過濾器將字串格式化為小寫
示例
<div ng-app="myApp" ng-controller="personCtrl">
<p>姓名是 {{ lastName | lowercase }}</p>
</div>
自己動手試一試 »
向指令新增過濾器
透過使用管道字元 |
,後跟過濾器,將過濾器新增到指令(如 ng-repeat
)中
示例
orderBy
過濾器對陣列進行排序
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
<li ng-repeat="x in names | orderBy:'country'">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
自己動手試一試 »
currency 過濾器
currency
過濾器將數字格式化為貨幣
在我們的 AngularJS currency Filter Reference 中瞭解有關 currency 過濾器的更多資訊
filter 過濾器
filter
過濾器選擇陣列的子集。
filter
過濾器只能用於陣列,它返回一個只包含匹配項的陣列。
示例
返回包含字母 "i" 的姓名
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
<li ng-repeat="x in names | filter : 'i'">
{{ x }}
</li>
</ul>
</div>
自己動手試一試 »
在我們的 AngularJS filter Filter Reference 中瞭解有關 filter 過濾器的更多資訊
根據使用者輸入過濾陣列
透過在輸入欄位上設定 ng-model
指令,我們可以將輸入欄位的值用作過濾器的表示式。
在輸入欄位中鍵入字母,列表將根據匹配項縮小/增長
- {{ x }}
示例
<div ng-app="myApp" ng-controller="namesCtrl">
<p><input type="text" ng-model="test"></p>
<ul>
<li ng-repeat="x in names | filter : test">
{{ x }}
</li>
</ul>
</div>
自己動手試一試 »
根據使用者輸入對陣列進行排序
單擊表頭以更改排序順序:
名稱 | Country |
---|---|
{{x.name}} | {{x.country}} |
透過在表頭上新增 ng-click
指令,我們可以執行一個函式來更改陣列的排序順序
示例
<div ng-app="myApp" ng-controller="namesCtrl">
<table border="1" width="100%">
<tr>
<th ng-click="orderByMe('name')">Name</th>
<th ng-click="orderByMe('country')">Country</th>
</tr>
<tr ng-repeat="x in names | orderBy:myOrderBy">
<td>{{x.name}}</td>
<td>{{x.country}}</td>
</tr>
</table>
</div>
<script>
angular.module('myApp', []).controller('namesCtrl', function($scope) {
$scope.names = [
{name:'Jani',country:'Norway'},
{name:'Carl',country:'Sweden'},
{name:'Margareth',country:'England'},
{name:'Hege',country:'Norway'},
{name:'Joe',country:'Denmark'},
{name:'Gustav',country:'Sweden'},
{name:'Birgit',country:'Denmark'},
{name:'Mary',country:'England'},
{name:'Kai',country:'Norway'}
];
$scope.orderByMe = function(x) {
$scope.myOrderBy = x;
}
});
</script>
自己動手試一試 »
自定義過濾器
您可以透過向模組註冊一個新的過濾器工廠函式來建立自己的過濾器
示例
建立一個名為 "myFormat" 的自定義過濾器
<ul ng-app="myApp" ng-controller="namesCtrl">
<li ng-repeat="x in names">
{{x | myFormat}}
</li>
</ul>
<script>
var app = angular.module('myApp', []);
app.filter('myFormat', function() {
return function(x) {
var i, c, txt = "";
for (i = 0; i < x.length; i++) {
c = x[i];
if (i % 2 == 0) {
c = c.toUpperCase();
}
txt += c;
}
return txt;
};
});
app.controller('namesCtrl', function($scope) {
$scope.names = ['Jani', 'Carl', 'Margareth', 'Hege', 'Joe', 'Gustav', 'Birgit', 'Mary', 'Kai'];
});
</script>
自己動手試一試 »
myFormat
過濾器將把每隔一個字元轉換為大寫。