要在控制器之间传递变量变化需要使用angular中的$broadcast和$emit方法来传递,同时使用$on来接收事件并作出响应。
broadcast译为广播,即上级传递下级。
示例代码:
<script src="/UploadFiles/2021-04-02/angular.js">上述代码使用$watch监听parent的值的变化,当发生变化时就会“广播”出parentChange事件并传递了参数(输入框的值),此时子元素作用域中使用了$scope.$on("parentChange, handler)" 来接收parentChange事件,然后接受输入框的值并赋值给子作用域中的child变量。 这样就完成了值的传递。
效果:
emit译为发射,即下级传递上级。
示例代码:
<script src="/UploadFiles/2021-04-02/angular.js">当子元素的child值发生变化时,会向上级发出childChange事件,此时父元素正在监听的$on(“childChange”)会做出响应,将传递的参数赋值给parent,整个流程与 broadcast类似。
效果:
上述作用域均存在层级关系,如果对于同级的作用域该如何做呢?
我们可以使用服务来广播事件: