範圍是HTML(視圖)和JavaScript(控制器)之間的結合部。
範圍與可用的屬性和方法的對象。
該範圍可為視圖和控制器。
如何使用範圍有多大?
當您在AngularJS控制器,你通過$scope
對象作為參數:
例
在控制器取得的屬性,可以在視圖被稱為:
<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>
試一試» 當添加屬性到$scope
中的控制器對象,視圖(HTML)獲得訪問這些屬性。
在視圖中,您不使用前綴$scope
,你只是指PROPERTYNAME,像{{carname}}
了解範圍
如果我們考慮一個AngularJS應用包括:
- 視圖,它是HTML。
- 模型,它是可用於當前視圖中的數據。
- 控制器,它是JavaScript函數使/更改/刪除/控制數據。
那麼範圍是模型。
範圍與屬性和方法,可供兩個視圖和控制器的JavaScript對象。
例
如果使在視圖的改變,模型和控制器將更新:
<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>
試一試» 了解你的範圍
它知道你正在處理哪些範圍有,在任何時候是非常重要的。
在以上兩個例子中只有一個範圍,所以知道你的範圍不是問題,但對於更大的應用程序有可以在HTML DOM部分只能訪問特定的範圍。
例
當與處理ng-repeat
指令,每次重複訪問當前重複的對象:
<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>
試一試» 每<li>
元件具有訪問當前重複對象,在這種情況下一個字符串,它是通過使用稱為x
。
根範圍
所有的應用程序有一個$rootScope
這是包含的HTML元素上創建的範圍ng-app
指令。
該rootScope在整個應用程序可用。
如果一個變量在兩個電流範圍和在rootScope具有相同的名稱,應用程序使用一個在當前範圍。
例
一個名為“色”的變量存在於兩個控制器的範圍,並在rootScope:
<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>
試一試»