最新的Web开发教程
 

AngularJS范围


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