以下内容学习自angularJS官网

一、ng-controller、ng-repeat等指令会创建一个新的scope,路由里面的controller也会创建一个新的scope。

二、可以为scope添加属性(数据模型)和行为(方法),可以通过$watch监听数据模型的变化。通过$apply方法把不是由Angular触发的数据模型的改变引入Angular的控制范围内。提供了表达式的执行环境

三、子scope可以访问和覆盖父scope的属性和行为

四、dom操作、格式化输入、过滤输出、可复用的代码等不应该放在控制器中

五、通过作用域可以进行事件传播,使用$broadcast方法从父scope广播到子scope,使用$emit方法从子scope向上发射到父scope。使用$on方法监听这两个事件。

六、scope的生命周期:

  1、创建期(rootScope是在应用程序启动时由$injector创建的。另外,在指令的模版link阶段,指令会创建一些新的子级scope)

  2、注册$watch(在模版link阶段,指令会往作用域中注册监听器,而且不止一个。这些$watch用来监测数据模型的更新并将更新值传给DOM)

  3、数据模型变化及监测(数据的变化必须发生在angular的执行上下文,angular才能够监听到变化,即这些变化要发生在$apply中,对于angular的api中数据模型的变化,angular是可以监听到的,不需要手动调用$apply。$apply之后,是进行$digest轮循,监听到数据有变化就调用$watch)

  4、销毁作用域(当作用域不再需要的时候,由谁创建就由谁销毁,也可以调用$destroy方法销毁)