Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。
Scope 是一个对象,有可用的方法和属性。
Scope 可应用在视图和控制器上。
如何使用 Scope
当你在 AngularJS 创建控制器时,你可以将 $scope 对象当作一个参数传递:
AngularJS 实例
控制器中的属性对应了视图上的属性:
<@H_502_15@div ng-app="myApp" ng-controller="myCtrl"> <@H_502_15@h1>{{carname}}</@H_502_15@h1> </@H_502_15@div> <@H_502_15@script> var app = angular.module('myApp',[]); app.controller('myCtrl',function($scope) { $scope.carname = "Volvo"; }); </@H_502_15@script>
尝试一下 »
当在控制器中添加
Scope 概述
AngularJS 应用组成如下:
View(视图),即 HTML。
Model(模型),当前视图中可用的数据。
Controller(控制器),即 JavaScript 函数,可以添加或修改属性。
scope 是模型。
scope 是一个 JavaScript 对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用。
AngularJS 实例
如果你修改了视图,模型和控制器也会相应更新:
<@H_502_15@div ng-app="myApp" ng-controller="myCtrl"> <@H_502_15@input ng-model="name"> <@H_502_15@h1>我的名字是 {{name}}</@H_502_15@h1> </@H_502_15@div> <@H_502_15@script> var app = angular.module('myApp',function($scope) { $scope.name = "John Dow"; }); </@H_502_15@script>
Scope 作用范围
了解你当前使用的 scope 是非常重要的。
在以上两个实例中,只有一个作用域 scope,所以处理起来比较简单,但在大型项目中, HTML DOM 中有多个作用域,这时你就需要知道你使用的 scope 对应的作用域是哪一个。
AngularJS 实例
当我们使用 ng-repeat 指令时,每个重复项都访问了当前的重复对象:
<@H_502_15@div ng-app="myApp" ng-controller="myCtrl"> <@H_502_15@ul> <@H_502_15@li ng-repeat="x in names">{{x}}</@H_502_15@li> </@H_502_15@ul> </@H_502_15@div> <@H_502_15@script> var app = angular.module('myApp',function($scope) { $scope.names = ["Emil","Tobias","Linus"]; }); </@H_502_15@script>
每个
根作用域
所有的应用都有一个
AngularJS 实例
创建控制器时,将 $rootScope 作为参数传递,可在应用中使用:
<@H_502_15@div ng-app="myApp" ng-controller="myCtrl"> <@H_502_15@h1>{{lastname}} 家族成员:</@H_502_15@h1> <@H_502_15@ul> <@H_502_15@li ng-repeat="x in names">{{x}} {{lastname}}</@H_502_15@li> </@H_502_15@ul> </@H_502_15@div> <@H_502_15@script> var app = angular.module('myApp',function($scope,$rootScope) { $scope.names = ["Emil","Linus"]; $rootScope.lastname = "Refsnes"; }); </@H_502_15@script>