AngularJS

AngularJS Filitre Kullanımı | AngularJS Filters

Bu yazıda AngularJS ile Filitre kullanımını inceleyeceğiz. AngularJS ile 3 tip filitreleme yapılabilir.

 

  1. Biçimlendirme Filtresi (Format Filter)
  2. Sıralama Filitresi (Sort Filter)
  3. Veri Filitresi (Filter Data)

AngularJS Filitre Dökümanı

AngularJS filtreleri bildirimler(directive) ile kullanılabileceği gibi bağlantı ifadeleri(binding expression) ile de kullanılabilir.

Filtreyi uygulamak için HTML içindeki ifadenin yanına ( | ) sembolü ile filtrelerler eklenir.

Kural:  {{ ifade | filitreAdı:parametre}}

 

Veri Biçimlendirmek için AngularJS Filtreleri

FiltreTanım
lowercaseTüm karekterleri küçük karakter olarak biçimlendirir
uppercaseTüm karekterleri büyük karakter olarak biçimlendirir
numberBir sayıyı metin olarak biçimlendirir. Virgül ile binde ve ondalık ayıracı dahil.
currencyBir sayıyı  döviz kuru olarak biçimlendirir. Varsayılan $ sembolüdür. Özel döviz kuru da tanımlanabilir.
dateBir tarihi istenilen formatta metin olarak biçimlendirir.

 

AngularJS Tarih Biçimleri

BiçimSonuç
yyyy4 basamaklı yıl. Örn: 2007
yy2 basamaklı yıl. Örn: 1988 => 88
MMMMJanuary – December
MMMJan – Dec
MM01 – 12
M1 – 12 (Sıfırsız)
dd01 – 31
d1 – 31 (Sıfırsız)

Angular tarih formatı dökümanı:
https://docs.angularjs.org/api/ng/filter/dateü

limitTo filitresi : kaç satır yada kaç karater gösterileceğini belirtir.

Kural: {{ ifade| limitTo : sınır: başlancıç}}

Aşağıdaki örnek bu açıklamaya ait bir uygulamadır.

SCRIPT: Daha önceki örneklerden hatırlayacağınız gibi. Yukarıdaki modelimizi controllar yapımıza bağlıyoruz.  Modül, Controller ve model için gerekli olan kodları yazdık.

var app = angular
.module("persModul", [])
.controller("persController", function ($scope) {

var personeller=[
{isim:"Hayri",soyisim:"KARA",dogum:new Date(1988,7,10),maas:3000},
{isim:"Yaşar",soyisim:"DOĞAN",dogum:new Date(1988,3,30),maas:2500},
{isim:"İsmet",soyisim:"ULUÇ",dogum:new Date(1983,6,20),maas:2700},
{isim:"Ayşe",soyisim:"YURT",dogum:new Date(1968,6,15),maas:3500},
{isim:"Sunay",soyisim:"YERLİ",dogum:new Date(1998,6,10),maas:2850},
{isim:"Nazmiye",soyisim:"ÇARIKÇI",dogum:new Date(1995,4,10),maas:2000}
];

$scope.personeller = personeller;
});

 

HTML: Filtre uygulamak için sayfaya bir tane text nesnesi(number) ekleyip ng-modeline satirSayisi ismini verdik. Bu modeli filtre içinde limitTo özelliğinine uygulayarak personel görünümün kaç satır olacağını belirleyeceğiz.

<input type="number" step="1"  ng-model="satirSayisi" max="5" min="0" />

HTML kodlarının birleştirilmiş hali;

1- ng-repeat  ifadesinin içine ( | ) sembolü ile filtrenin eklendiğini ve satirSayisi modelinin parametre olarak geçirildi.

2-personel adı büyük karakter yapıldı.

3- tarih formatı gün/ay/yıl olarak düzeltildi.

4-maaş tl sembolü ve 2 ondalık basamak şeklide yapıldı.

5- maaş 2 ondalık basamak olacak şekilde sayı olarak düzenlendi.

<body ng-app="persModul">
<div ng-controller="persController">
<div>
Satır Sayısı : <input type="number" step="1" ng-model="satirSayisi" max="5" min="0" />
</div>
<table border=1>
 <thead>
 <tr>
 <th>İSİM</th>
 <th>SOYİSİM</th>
 <th>CİNSİYET</th>
 <th>MAAŞ</th>
 <th>MAAŞ</th>
 </tr>
 </thead>
 <tbody>
 <tr ng-repeat="personel in personeller|limitTo:satirSayisi"><!-- $scope.personeller ile gelen ifade-->
 <td> {{ personel.isim | uppercase }} </td>
 <td> {{ personel.soyisim }} </td>
 <td> {{ personel.dogum | date:'dd-MM-yyyy'}} </td>
 <td> {{ personel.maas |currency : '₺' :2 }} </td>
 <td> {{ personel.maas |number :2 }} </td>
 </tr>
 </tbody>
 </table>
</div>
</body>

 

ÖRNEK 2: Basit bir sayfalama uygulaması.  Yukarıdaki kodlara ek olarak modele kayitSayisi ve sayfaNo değerlerini ekledik. limitTo filitresinin limitTo:sınır:baslangıç şeklinde kullanıldığını biliyoruz.

sınır ifadesine her sayfada gösterilecek kayıtsayısı.

başangıç ifadesine de  sayfaNo*kayıtsayısı şeklinde kod uyguladığımızda text kutusundaki değişen her değer için bir sonraki sayfaya odaklanacaktır.

<!doctype html>
<html>
<head>
<meta charset="utf-8"> 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script>

var app = angular
.module("persModul", [])
.controller("persController", function ($scope) {

var personeller=[
{ "isim": "Yezdan","soyisim": "Erdurak","cinsiyet": "Erkek","maas": "3569" },
{ "isim": "Elfiye","soyisim": "Şencin","cinsiyet": "Erkek","maas": "4143" },
{ "isim": "Ezfer","soyisim": "Ovacık","cinsiyet": "Erkek","maas": "2705" },
{ "isim": "Teberhun","soyisim": "Karadağ sazak","cinsiyet": "Kız","maas": "2337" },
{ "isim": "Çağar","soyisim": "Alkan","cinsiyet": "Kız","maas": "1883" },
{ "isim": "Mükafi","soyisim": "Düşer","cinsiyet": "Kız","maas": "3869" },
{ "isim": "Süreha","soyisim": "Karakaya","cinsiyet": "Erkek","maas": "1796" },
{ "isim": "Taberi","soyisim": "Abacılı","cinsiyet": "Kız","maas": "4054" },
{ "isim": "Bala","soyisim": "Merkan","cinsiyet": "Erkek","maas": "2703" },
{ "isim": "Nil","soyisim": "Aksaç","cinsiyet": "Erkek","maas": "3510" },
{ "isim": "Ulualp","soyisim": "Seziş","cinsiyet": "Erkek","maas": "2688" },
{ "isim": "Çağlar","soyisim": "Selçuk atay","cinsiyet": "Erkek","maas": "3524" },
{ "isim": "Berkem","soyisim": "Erdoğan","cinsiyet": "Kız","maas": "2290" },
{ "isim": "Özgünel","soyisim": "Demirtaş","cinsiyet": "Erkek","maas": "3193" },
{ "isim": "Mübelliğ","soyisim": "Ölçer","cinsiyet": "Kız","maas": "3603" },
{ "isim": "Tuyuğ","soyisim": "Aral kaplan","cinsiyet": "Erkek","maas": "2270" },
{ "isim": "Zafir","soyisim": "Dingiz","cinsiyet": "Erkek","maas": "1880" },
{ "isim": "Gülnar","soyisim": "Dinç","cinsiyet": "Kız","maas": "1897" },
{ "isim": "Badegül","soyisim": "Tekelioğlu","cinsiyet": "Erkek","maas": "3587" },
{ "isim": "Binalp","soyisim": "İsen","cinsiyet": "Kız","maas": "4334" },
{ "isim": "Ganiye","soyisim": "Ekmekyapar","cinsiyet": "Erkek","maas": "2696" },
{ "isim": "Baykutay","soyisim": "Karadeniz","cinsiyet": "Erkek","maas": "3882" },
{ "isim": "Safiye","soyisim": "Muzoğlu","cinsiyet": "Kız","maas": "4015" },
{ "isim": "Atınç","soyisim": "Eroğlu","cinsiyet": "Kız","maas": "3757" },
{ "isim": "Sanaç","soyisim": "Yakıcı","cinsiyet": "Erkek","maas": "4088" },
{ "isim": "Mihrace","soyisim": "Aytekin","cinsiyet": "Erkek","maas": "3524" },
{ "isim": "Paksu","soyisim": "Savaşlı","cinsiyet": "Erkek","maas": "3686" },
{ "isim": "Sivar","soyisim": "Dinler","cinsiyet": "Erkek","maas": "4493" },
{ "isim": "Ataergin","soyisim": "Aker","cinsiyet": "Erkek","maas": "2922" },
{ "isim": "Emirkan","soyisim": "Pamukbasanoğlu","cinsiyet": "Erkek","maas": "2665" },
{ "isim": "Aksun","soyisim": "Karakoç","cinsiyet": "Erkek","maas": "3417" },
{ "isim": "Kamuran","soyisim": "Uzunoğlu","cinsiyet": "Erkek","maas": "3389" },
{ "isim": "Burgaç","soyisim": "Kazıcı","cinsiyet": "Erkek","maas": "2070" },
{ "isim": "Bargu","soyisim": "Sandıkcı","cinsiyet": "Erkek","maas": "1988" },
{ "isim": "Han","soyisim": "Güvendik","cinsiyet": "Kız","maas": "2511"}
];

$scope.personeller = personeller;
$scope.kayitSayisi=10;
$scope.sayfaNo=0;
});


</script>
</head>
<body ng-app="persModul">
<div ng-controller="persController">
<div>
 Her Sayfada Gösterilecek Kayıt Sayısı:<strong>{{kayitSayisi}}</strong>
 </div>
 <div>
 Sayfa Numarası: <input type="number" step="1" ng-model="sayfaNo" min="1" />
 </div>
<table border=1>
<thead>
<tr>
<th>İSİM</th>
<th>SOYİSİM</th>
<th>CİNSİYET</th>
<th>MAAŞ</th>
<th>MAAŞ</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="personel in personeller|limitTo:kayitSayisi:sayfaNo*kayitSayisi"><!-- $scope.personeller ile gelen ifade-->
<td> {{ personel.isim | uppercase }} </td>
<td> {{ personel.soyisim }} </td>
<td> {{ personel.dogum | date:'dd-MM-yyyy'}} </td>
<td> {{ personel.maas |currency : '₺' :2 }} </td>
<td> {{ personel.maas |number :2 }} </td>
</tr>
</tbody>
</table>
</div>
</body>

</html>

 

Sonraki yazıda Sıralama Filtresini İnceleyeceğiz.

 

 

AngularJS Örnek Uygulama

 

AngularJS ile ilgili diğer yazıları da okumak istermisiniz.

Yorum Yap