范围是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>
试一试»