AngularJS-filters
Filters kan in AngularJS bygevoeg word om data te formateer.
AngularJS-filters
AngularJS bied filters om data te transformeer:
currency
Formateer 'n getal na 'n geldeenheidformaat.date
Formateer 'n datum na 'n gespesifiseerde formaat.filter
Kies 'n subset van items uit 'n skikking.json
Formateer 'n voorwerp na 'n JSON-string.limitTo
Beperk 'n skikking/string tot 'n gespesifiseerde aantal elemente/karakters.lowercase
Formateer 'n string na kleinletters.number
Formateer 'n getal na 'n string.orderBy
Rangskik 'n skikking volgens 'n uitdrukking.uppercase
Formateer 'n string na hoofletters.
Voeg filters by uitdrukkings
Filters kan by uitdrukkings gevoeg word deur die pypkarakter te gebruik |
, gevolg deur 'n filter.
Die uppercase
filterformaat stringe na hoofletters:
Voorbeeld
<div ng-app="myApp" ng-controller="personCtrl">
<p>The name is {{ lastName | uppercase }}</p>
</div>
Die lowercase
filterformaat stringe na kleinletters:
Voorbeeld
<div ng-app="myApp" ng-controller="personCtrl">
<p>The name is {{ lastName | lowercase }}</p>
</div>
Voeg filters by riglyne
Filters word by voorskrifte gevoeg, soos ng-repeat
, deur die pypkarakter te gebruik
|
, gevolg deur 'n filter:
Voorbeeld
Die orderBy
filter sorteer 'n skikking:
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
<li ng-repeat="x in names | orderBy:'country'">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
Die geldeenheid Filter
Die currency
filter formateer 'n getal as geldeenheid:
Voorbeeld
<div ng-app="myApp" ng-controller="costCtrl">
<h1>Price: {{ price | currency }}</h1>
</div>
Lees meer oor die geldeenheidfilter in ons AngularJS-geldeenheidfilterverwysing
Die filter Filter
Die filter
filter kies 'n subset van 'n skikking.
Die filter
filter kan slegs op skikkings gebruik word, en dit gee 'n skikking terug wat slegs die ooreenstemmende items bevat.
Voorbeeld
Gee die name terug wat die letter "i" bevat:
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
<li ng-repeat="x in names |
filter : 'i'">
{{ x }}
</li>
</ul>
</div>
Lees meer oor die filterfilter in ons AngularJS-filterfilterverwysing
Filtreer 'n skikking gebaseer op gebruikerinvoer
Deur die ng-model
opdrag op 'n invoerveld te stel, kan ons die waarde van die invoerveld as 'n uitdrukking in 'n filter gebruik.
Tik 'n letter in die invoerveld, en die lys sal krimp/groei, afhangende van die pasmaat:
- Jani
- Carl
- Margareth
- Hege
- Joe
- Gustav
- Birgit
- Maria
- Kai
Voorbeeld
<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>
Sorteer 'n skikking gebaseer op gebruikerinvoer
Klik op die tabelopskrifte om die sorteervolgorde te verander::
Naam | Land |
---|---|
Jani | Noorweë |
Carl | Swede |
Margareth | Engeland |
Hege | Noorweë |
Joe | Denemarke |
Gustav | Swede |
Birgit | Denemarke |
Maria | Engeland |
Kai | Noorweë |
Deur die ng-click
opdrag op die tabelopskrifte by te voeg, kan ons 'n funksie uitvoer wat die sorteervolgorde van die skikking verander:
Voorbeeld
<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>
Pasgemaakte filters
Jy kan jou eie filters maak deur 'n nuwe filterfabriekfunksie by jou module te registreer:
Voorbeeld
Maak 'n pasgemaakte filter genaamd "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>
Die myFormat
filter sal elke ander karakter na hoofletters formateer.