Biraz daha direktiflerden bahsetmek istiyorum.. ng-click
, ng-model
ve ng-repeat
direktifleri ile devam edebiliriz yazımıza.
ng-click
ng-click
direktifi elemana tıkladığımızda özel bir davranış belirlememizi sağlar. Örneğin elemana tıklanınca ne yapılması gerektiğini belirleyebiliriz. Ya da bir fonksiyon çalıştırabiliriz gibi..
<div ng-app ng-init="site='erbilen.net'"> <a href="#" ng-click="site = 'prototurk.com'">[Siteyi değiştir!]</a> {{ site }} </div>
ng-model
ng-model
için küçük bir örnek ile başlayalım. Hiç controller karıştırmadan ng-app dedikten sonra bu kodları çalıştıralım.
<input type="text" ng-model="kelime" /> <p>{{ kelime }}</p>
Evet artık input’a ne yazarsam hemen aşağısında o çıkacak.
Ya da daha farklı bir örnek vermek gerekirse;
<div ng-app="app"> <div ng-controller="myController"> <input type="text" placeholder="Birşeyler yaz.." ng-model="kelime" ng-bind="alert(kelime)"> </div> </div>
Şimdi input’ta yazınca bind ettiğim için controllerımdaki alert metodum çalışacak ve yazılan değer ekranda alert ile gösterilecek.
var app = angular.module('app', []); app.controller('myController', ['$scope', function($scope){ $scope.alert = function(str){ if ( typeof str != 'undefined' ) alert(str); } }]);
ng-repeat
$http servisi ile bir request yapıyoruz ve gelen datayı ng-repeat
ile tekrarlatıyoruz. Yani kısaca döngüye sokuyoruz. Nasıl mı?
var app = angular.module('app', []); var myController = function($scope, $http){ var onComplete = function(response){ $scope.repos = response.data; } var onError = function(response){ $scope.error = 'Bir sorun oluştu!'; } $http.get('https://api.github.com/users/tayfunerbilen/repos') .then(onComplete, onError); }; app.controller('myController', ['$scope', '$http', myController]);
Şimdi html tarafında ise şöyle göstereceğim;
<div ng-app="app"> <div ng-controller="myController"> Tayfun Erbilen - Github Repo <ul> <li ng-repeat="repo in repos"> {{ repo.name }} <span style="display: block; color: #777;"> {{ repo.description }} </span> </li> </ul> </div> </div>