Page 34 - AngularJS权威教程
P. 34
14 第 4 章 作用域
4.3 作用域能做什么
作用域有以下的基本功能:
提供观察者以监视数据模型的变化;
可以将数据模型的变化通知给整个应用,甚至是系统外的组件;
可以进行嵌套,隔离业务功能和数据;
给表达式提供运算时所需的执行环境。
开发AngularJS应用的大部分工作内容,就是构建作用域及其相关的功能。
作用域包含了渲染视图时所需的功能和数据,它是所有视图的唯一源头。可以将作
用域理解成视图模型(view model)。
前面的例子中,我们在$rootScope中设置了一个name变量并在视图中引用了它:
angular.module('myApp', [])
.run(function($rootScope) {
$rootScope.name = "World";
});
在视图中可以引用这个name属性并将它展示给用户:
<div ng-app="myApp">
<h1>Hello {{ name }}</h1>
</div>
我们可以不将变量设置在$rootScope上,而是用控制器显式创建一个隔离的子$scope对象,
把它设置到这个子对象上。使用ng-controller指令可以将一个控制器对象附加到DOM元素上,
如下所示:
<div ng-app="myApp">
<div ng-controller="MyController">
<h1>Hello {{ name }}</h1>
</div>
</div>
我们可以创建一个控制器来管理与其相关的变量,而不用将name变量直接放在$rootScope上:
angular.module("myApp", [])
.controller('MyController',
function($scope) {
$scope.name = "Ari";
});
ng-controller指令为这个DOM元素创建了一个新的$scope对象,并将它嵌套在$rootScope中。
4.4 $scope 的生命周期
当Angular关心的事件发生在浏览器中时,比如用户在通过ng-model属性监控的输入字段中
输入,或者带有ng-click属性的按钮被点击时,Angular的事件循环都会启动。这个事件将在
Angular执行上下文中处理。