在 AngularJS 中,作用域(Scope)是一个 JavaScript 对象,用于存储模型数据,以及将模型数据绑定到视图。作用域是一个可访问的对象,用于传递数据和事件,使控制器(Controller)和视图之间能够通信。

作用域是 AngularJS 应用程序中的一个关键概念,具有以下几个特点:

1. 层次结构

AngularJS 中的作用域形成了一个层次结构,与 DOM 树的结构相对应。每个 AngularJS 控制器都有一个作用域,它可以包含子作用域,从而形成了一个层次化的结构。

2. 继承性

子作用域会继承父作用域的属性和方法,但是子作用域的修改不会影响父作用域。

3. 双向数据绑定

作用域是双向数据绑定的基础。当作用域中的模型数据发生变化时,视图会自动更新,反之亦然。这是通过 AngularJS 的脏检查机制来实现的,即 AngularJS 会定期检查作用域中的变化。

4. 控制器和视图的桥梁

作用域充当了控制器(Controller)和视图之间的桥梁,通过作用域,控制器可以将数据传递给视图,并监听视图上的事件。

5. 生命周期

作用域有自己的生命周期,包括创建、更新和销毁阶段。这些生命周期与控制器和指令的生命周期密切相关。

在控制器中,你可以通过 $scope 对象来访问作用域。例如:
app.controller('myController', function($scope) {
  // 在作用域中定义一个变量
  $scope.message = 'Hello, AngularJS!';
});

在视图中,你可以使用双花括号 ({{}}) 语法来访问作用域中的数据:
<p>{{ message }}</p>

此时,message 是通过作用域传递到视图中的数据。

需要注意的是,AngularJS 在新版本中引入了控制器别名语法 controllerAs,并鼓励使用组件化开发。在这种情况下,作用域仍然存在,但使用了控制器别名来访问作用域中的数据。


转载请注明出处:http://www.pingtaimeng.com/article/detail/4857/Angular