AngularJS 过滤器
- 上一页 AngularJS 作用域
- 下一页 AngularJS 服务
Maaaring magdagdag ng pinasinghapan sa AngularJS upang formatihin ang data.
AngularJS 过滤器
Ang AngularJS ay nagbibigay ng mga pinasinghapan upang pagbabaguhin ang data:
currency
Ginagawang format ng pera ang numerodate
Ginagawang tiyak na format ang petsafilter
Pumili ng isang subset mula sa arrayjson
Ginagawang JSON string ang obhektonglimitTo
Limitahan ang array/string sa tiyak na bilang ng mga elemento/mga characterlowercase
Ginagawang maliliit ang stringnumber
Ginagawang string ang numeroorderBy
Iayos ang array sa pamamagitan ng ekspresyonuppercase
Ginagawang malaki ang string
Magdagdag ng pinasinghapan sa ekspresyon
Maaaring gamitin ang pambalat na | upang magdagdag ng pinasinghapan sa ekspresyon, at sumunod ng isang pinasinghapan.
uppercase
Ang pinasinghapan ng string ay ginagawang malaki na:
Egemplo
<div ng-app="myApp" ng-controller="personCtrl"> <p>Ang pangalan ay {{ lastName | uppercase }}</p> </div>
lowercase
Ang pinasinghapan ng string ay ginagawang maliliit na:
Egemplo
<div ng-app="myApp" ng-controller="personCtrl"> <p>名字是 {{ lastName | lowercase }}</p> </div>
向指令添加过滤器
通过使用管道字符 |
后跟过滤器,可以将过滤器添加到指令中,例如 ng-repeat
:
Egemplo
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
过滤器将数字格式化为货币:
Egemplo
<div ng-app="myApp" ng-controller="costCtrl"> <h1>Price: {{ price | currency }}</h1> </div>
有关 currency 过滤器的更多信息,请参阅我们的 AngularJS currency 过滤器参考手册。
filter 过滤器
filter
过滤器选择数组的子集。
filter
过滤器只能用于数组,它返回只包含匹配项的数组。
Egemplo
返回包含字母 "i" 的名字:
<div ng-app="myApp" ng-controller="namesCtrl"> <ul> <li ng-repeat="x in names | filter : 'i'"> {{ x }} </li> </ul> </div>
有关 filter 过滤器的更多信息,请参阅我们的 AngularJS filter 过滤器参考手册。
根据用户输入过滤数组
通过在输入字段上设置 ng-model
指令,我们可以使用输入字段的值作为过滤器中的表达式。
在输入字段中输入一个字母,列表将根据匹配项进行缩小/扩大:
- Jani
- Carl
- Margareth
- Hege
- Joe
- Gustav
- Birgit
- Mary
- Kai
Egemplo
<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>
根据用户输入对数组进行排序
单击表头可更改排序顺序:
Name Country Jani Norway Carl Sweden Margareth England Hege Norway Joe Denmark Gustav Sweden Birgit Denmark Mary England Kai Norway通过在表头添加 ng-click
指令,我们可以运行一个函数,该函数会更改数组的排序顺序:
Egemplo
<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; } });
Custom Filter
Maaari mong lumikha ng sariling filter sa pamamagitan ng pagtatalaga ng bagong factory function sa module:
Egemplo
Iskapa ang isang sariling filter na may pangalang "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']; });
myFormat
过滤器将每隔一个字符格式化为大写。
- 上一页 AngularJS 作用域
- 下一页 AngularJS 服务