最新的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>
試一試»