控制器指令通信 - Mirror198829/AngularJs1 GitHub Wiki
通信方式共有以下几种方式:
- 基于scope继承的方式
- 基于event传播的方式
- service的方式
- 基于scope继承的方式(父子)
- 基本类型:
(1)初始子继承父,父变子变
(2)子变父不变,而后父变子不变 - 引用类型:
(1)初始子继承父,父变子变
(2)子变父变,而后父变子变
- 基于event传播方式 (父子,兄弟)
$on,$emit,$broadcast
-
子 ——> 父 $emit
(1) 子scope中的控制器通过$scope.$emit注册一个向上传播事件
(2) 该事件会经过每一层父scope,但是每一层父scope不会处理
(3) 父要处理,需要在父scope上使用$scope.$on监听 -
父 ——> 子 $broadcast
从父到子,跟子集到父级一样,使用同样用$broadcast注册时间,用 $on 监听着 -
兄弟间
拥有同个父scope的子级scope之间,也就是兄弟/相邻scope之间的通信,其实是借助共同父级传递消息的
父子级指令间通信 指令相当一个模块,require告诉指令运行需要引用的其他指令,定义在 controller 上就能把方法和属性暴露出去
指令内通过scope的参数值不同进行不同的数据和方法的共享