AngularJS suodattimet

Voit lisätä AngularJS:ään suodattimia datan muotoiluun.

AngularJS suodattimet

AngularJS tarjoaa suodattimia datan muuntamiseen:

  • currency Muunna numero valuuttamuotoon
  • date Muunna päivämäärä tiettyyn muotoon
  • filter Valitse taulukosta alijoukko
  • json Muunna objekti JSON-merkkijonoksi
  • limitTo Rajoita taulukko/merkkijono tiettyyn määrään elementtejä/merkkejä
  • lowercase Muunna merkkijono pieniksi kirjaimiksi
  • number Muunna numero merkkijonoksi
  • orderBy Järjestä taulukko lausekkeen avulla
  • uppercase Muunna merkkijono isoksi kirjaimeksi

Lisää suodattimen lauseeseen

Voit lisätä suodattimen lauseeseen käyttämällä putkiruutua | ja sitten suodatinta.

uppercase Suodattimet muuntavat merkkijonon isoksi kirjaimiksi:

Esimerkki

<div ng-app="myApp" ng-controller="personCtrl">
<p>Nimi on {{ lastName | uppercase }}</p>
</div>

Kokeile itse

lowercase Suodattimet muuntavat merkkijonon pieniksi kirjaimiksi:

Esimerkki

<div ng-app="myApp" ng-controller="personCtrl">
<p>Nimi on {{ lastName | lowercase }}</p>
</div>

Kokeile itse

lisätäksesi suodattimen ohjeeseen

käyttämällä putkimerkkiä | sekä suodattimia, joita voidaan lisätä ohjeisiin, esimerkiksi ng-repeat

Esimerkki

orderBy-suodattimet järjestävät taulukon:

<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
  <li ng-repeat="x in names | orderBy:'country'">
    {{ x.name + ', ' + x.country }}
  </li>
</ul>
</div>

Kokeile itse

currency-suodattimet

currency Suodattimet muuntavat luvut valuutaksi:

Esimerkki

<div ng-app="myApp" ng-controller="costCtrl">
<h1>Hinta: {{ price | currency }}</h1>
</div>

Kokeile itse

Lisätietoja currency-suodattimesta löydät AngularJS currency-suodattimen ohjeesta.

filter-suodattimet

filter Suodattimet valitsevat taulukon alajoukon.

filter Suodattimet voidaan käyttää vain taulukoissa, ja ne palauttavat vain vastaavien kohteiden taulukon.

Esimerkki

Palauttaa nimet, jotka sisältävät kirjaimen "i":

<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
  <li ng-repeat="x in names | filter : 'i'">
    {{ x }}
  </li>
</ul>
</div>

Kokeile itse

Lisätietoja filter-suodattimesta löydät AngularJS filter-suodattimen ohjeesta.

Suodata taulukko käyttäjän syötteen perusteella

Asettamalla syötealaalle ng-model Ohje, voimme käyttää syötealaan syötetyn arvon suodattimen lausekkeena.

Syötä kirjain syötealaan, ja luettelo supistuu/kokoontuu vastaavasti:

  • Jani
  • Carl
  • Margareth
  • Hege
  • Joe
  • Gustav
  • Birgit
  • Mary
  • Kai

Esimerkki

<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>

Kokeile itse

Järjestä taulukko käyttäjän syötteen perusteella

Napsauttamalla taulukon otsikkoa voit muuttaa järjestysjärjestystä:

Nimi Maa Jani Norja Carl Ruotsi Margareth Englanti Hege Norja Joe Tanska Gustav Ruotsi Birgit Tanska Mary Englanti Kai Norja

Lisäämällä taulukon otsikkoon ng-click Ohje, voimme suorittaa funktion, joka muuttaa taulukon järjestysjärjestystä:

Esimerkki

<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>

Kokeile itse

Mukautettu suodatin

Voit luoda oman suodattimen rekisteröimällä uuden suodattimen tehtaan moduuliin:

Esimerkki

Luo mukautettu suodatin nimeltä "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>

Kokeile itse

myFormat Suodattimet muotoilevat joka toisen kirjaimen isoksi.