Mevcut kapsam içinde bir değişken oluşturmak için ng-init yönergesini kullanılır.
Aşağıdaki basit örnek uygulama modülü içinde degisken adında bir tane direktif(değiken-yönerge) oluşturup yine aynı direktifte kullandık.
<!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("uygulama", []);
</script>
</head>
<body ng-app="uygulama">
<div ng-init="degisken='Merhaba Dünya'">
{{degisken}}
</div>
</body>
</html>
Gerçek hayatta aşağıdaki örneği bu şekilde kullanamasak da ng-init yönergesinin anlatımı için ng-init içine müsterileri modelini müşteriler değişkeni olarak ekledik. ng-init içindeki ifade modül çalıştığı gibi ifade oluşturulp model ifadeye eklenecektir. Sonra ise önceki makalelerde yazdığım gibi ng-repeat ile tüm veriler üzerinde ileri yönlü okuma yaparak tüm modeli bir tablo içinde yazdırıyoruz.
Unutmayın gerçek bir örnekte model html içi yerine bir controller içine yazılıp kullanılır.
HTML&SCRIPT
<!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", []);
</script>
</head>
<body ng-app="persModul">
<div ng-init="personeller=[
{ isim: 'Yezden', soyisim: 'Erdurak', cinsiyet: 'Erkek', maas: '3569' },
{ isim: 'Elfiye', soyisim: 'Şencin', cinsiyet: 'Erkek', maas: '4143' },
{ 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' }
]">
<table border=1>
<thead>
<tr>
<th>İSİM</th>
<th>SOYİSİM</th>
<th>CİNSİYET</th>
<th>MAAŞ</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="personel in personeller">
<td> {{ personel.isim }} </td>
<td> {{ personel.soyisim }} </td>
<td> {{ personel.cinsiyet }} </td>
<td> {{ personel.maas }} </td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
Hadi gelin ng-init kavramını gerçek bir model üzerinde uygulayalım. Uygulamamızda Şehir isimlerini ve bu şehirlerin 2 tane ilçesini yazdıran model hazırlayıp bu modeli listeler halinde ekrana yazdıracağız. ng-repeat ile il ve ilçe isimlerini ekrana yazdırırken mevcut index değerini de ng-init alıp ekrana yazdıracağız. NOT:Angularda mevcut index değeri için $index ifadesi kullanılmaktadır.
SCRIPT:Aşağıdaki script kodu ile şehirler ve ilçeleri modelini oluşturup angular modülüne bağladık.
<script>
var app = angular
.module("uygulama", [])
.controller("ornControl", function ($scope) {
var sehirler = [
{
adi: "İstanbul",
ilceler: [
{ adi: "Kartal" },
{ adi: "Beylikdüzü" }
]
},
{
adi: "Edirne",
ilceler: [
{ adi: "Enez" },
{ adi: "Keşan" },
]
}
];
$scope.sehirler = sehirler;
});
</script>
HTML:ng-init yönergesi ng-repeat ile dönmekte olan mevcut ilin index değerini alıp ustIndex değerine aktarıyor. Alttaki ng-repeat ile her hangi bir init değerine aktarmadan mevcut $index değerini ekrana yazdırıyoruz.
<body ng-app="uygulama">
<div ng-controller="ornControl">
<ul>
<li ng-repeat="sehir in sehirler" ng-init="ustIndex = $index">
{{sehir.adi}}
<ul>
<li ng-repeat="ilce in sehir.ilceler">
{{ilce.adi}} -<b> Üst Index = {{ ustIndex }}, Index = {{ $index }}</b>
</li>
</ul>
</li>
</ul>
</div>
</body>
HTML & SCRIPT
<!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("uygulama", [])
.controller("ornControl", function ($scope) {
var sehirler = [
{
adi: "İstanbul",
ilceler: [
{ adi: "Kartal" },
{ adi: "Beylikdüzü" }
]
},
{
adi: "Edirne",
ilceler: [
{ adi: "Enez" },
{ adi: "Keşan" },
]
}
];
$scope.sehirler = sehirler;
});
</script>
</head>
<body ng-app="uygulama">
<div ng-controller="ornControl">
<ul>
<li ng-repeat="sehir in sehirler" ng-init="ustIndex = $index">
{{sehir.adi}}
<ul>
<li ng-repeat="ilce in sehir.ilceler">
{{ilce.adi}} -<b> Üst Index = {{ ustIndex }}, Index = {{ $index }}</b>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

