AngularJS Kapsamı
Kapsam, HTML (görünüm) ve JavaScript (denetleyici) arasındaki bağlayıcı kısımdır.
Kapsam, mevcut özelliklere ve yöntemlere sahip bir nesnedir.
Kapsam hem görünüm hem de denetleyici için kullanılabilir.
Kapsam Nasıl Kullanılır?
AngularJS'de bir controller yaptığınızda, $scope
nesneyi argüman olarak iletirsiniz:
Örnek
Kontrolörde yapılan özellikler, görünümde ifade edilebilir:
<div ng-app="myApp" ng-controller="myCtrl">
<h1>{{carname}}</h1>
</div>
<script>
var app = angular.module('myApp',
[]);
app.controller('myCtrl', function($scope) {
$scope.carname
= "Volvo";
});
</script>
Denetleyicideki nesneye özellikler eklerken $scope
, görünüm (HTML) bu özelliklere erişim sağlar.
Görünümde ön eki kullanmazsınız, $scope
sadece gibi bir özellik adına başvurursunuz {{carname}}
.
Kapsamı Anlamak
Bir AngularJS uygulamasının şunlardan oluştuğunu düşünürsek:
- HTML olan Görünüm.
- Geçerli görünüm için kullanılabilen veriler olan model.
- Verileri yapan/değiştiren/kaldıran/kontrol eden JavaScript işlevi olan denetleyici.
O zaman kapsam Modeldir.
Kapsam, hem görünüm hem de denetleyici için kullanılabilen özelliklere ve yöntemlere sahip bir JavaScript nesnesidir.
Örnek
Görünümde değişiklik yaparsanız, model ve denetleyici güncellenecektir:
<div ng-app="myApp" ng-controller="myCtrl">
<input ng-model="name">
<h1>My name is {{name}}</h1>
</div>
<script>
var app = angular.module('myApp',
[]);
app.controller('myCtrl', function($scope) {
$scope.name
= "John Doe";
});
</script>
Kapsamınızı Bilin
Herhangi bir zamanda hangi kapsamla uğraştığınızı bilmek önemlidir.
Yukarıdaki iki örnekte yalnızca bir kapsam vardır, bu nedenle kapsamınızı bilmek bir sorun değildir, ancak daha büyük uygulamalar için HTML DOM'de yalnızca belirli kapsamlara erişebilen bölümler olabilir.
Örnek
Yönerge ile uğraşırken ng-repeat
, her tekrarın mevcut tekrar nesnesine erişimi vardır:
<div ng-app="myApp" ng-controller="myCtrl">
<ul>
<li ng-repeat="x in names">{{x}}</li>
</ul>
</div>
<script>
var app = angular.module('myApp',
[]);
app.controller('myCtrl', function($scope) {
$scope.names
= ["Emil", "Tobias", "Linus"];
});
</script>
Her <li>
öğenin geçerli yineleme nesnesine, bu durumda kullanılarak başvurulan bir dizeye erişimi vardır x
.
Kök Kapsamı
Tüm uygulamalar , yönergeyi $rootScope
içeren HTML öğesinde oluşturulan kapsam olan bir alana sahiptir.ng-app
rootScope tüm uygulamada mevcuttur.
Bir değişken hem geçerli kapsamda hem de rootScope'ta aynı ada sahipse, uygulama mevcut kapsamdaki değişkeni kullanır.
Örnek
Hem denetleyicinin kapsamında hem de rootScope'da "color" adlı bir değişken bulunur:
<body ng-app="myApp">
<p>The rootScope's favorite color:</p>
<h1>{{color}}</h1>
<div ng-controller="myCtrl">
<p>The scope of the controller's favorite color:</p>
<h1>{{color}}</h1>
</div>
<p>The rootScope's favorite color is
still:</p>
<h1>{{color}}</h1>
<script>
var app = angular.module('myApp', []);
app.run(function($rootScope) {
$rootScope.color = 'blue';
});
app.controller('myCtrl',
function($scope) {
$scope.color = "red";
});
</script>
</body>