AngularJS $on $broadcast $emit】的更多相关文章

如何在作用域之间通信呢? 1.创建一个单例服务,然后通过这个服务处理所有子作用域的通信. 2.通过作用域中的事件处理通信.但是这种方法有一些限制:例如,你并不能广泛的将事件传播到所有监控的作用域中.你必须选择是否与父级作用域或者子作用域通信.$on.$emit和$broadcast使得event.data在controller之间的传递变的简单.$emit:子传父 传递event与data$broadcast:父传子 child controller传递event与data$on:监听或接收数据…
Angular按照发布/订阅模式设计了其事件系统,使用时需要“发布”事件,并在适当的位置“订阅”或“退订”事件,就像邮箱里面大量的订阅邮件一样,当我们不需要时就可以将其退订了.具体到开发中,对应着$scope和$rootScope的$emit.$broadcast和$on方法.本文介绍Angular的事件机制,包括$scope和$rootScope处理事件上的异同,$broadcast.$emit和$on的使用方式及他们区别等内容. $scope与$scope之间的关系,$scope与$root…
AngularJS中的作用域有一个非常有层次和嵌套分明的结构.其中它们都有一个主要的$rootScope(也就说对应的Angular应用或者ng-app),然后其他所有的作用域部分都是继承自这个$rootScope的,或者说都是嵌套在主作用域下面的.很多时候,你会发现这些作用域不会共享变量或者说都不会从另一个原型继承什么. 那么在这种情况下,如何在作用域之间通信呢?其中一个选择就是在应用程序作用域之中创建一个单例服务,然后通过这个服务处理所有子作用域的通信. 在AngularJS中还有另外一个选…
$emit只能向parent controller传递event与data $broadcast只能向child controller传递event与data $on用于接收event与data 例子如下 html代码 <div ng-controller="ParentCtrl"> <!--父级--> <div ng-controller="SelfCtrl"> <!--自己--> <a ng-click=&q…
开发中有时候会需要控制器之间的传值操作:下面几个操作可以达到所需, 注:无平级之间的操作 $emit只能向父 controller传递event与data$broadcast只能向子 controller传递event与data$on用于接收event与data…
$emit只能向parent controller传递event与data( $emit(name, args) ) $broadcast只能向child controller传递event与data( $broadcast(name, args) ) $on用于接收event与data( $on(name, listener) ) <div ng-controller="ParentCtrl"> <!--父级--> <div ng-controller=…
下面以一个例子来讲述 angular 中的event system,有$emit(), $on(), $broadcast().效果图如下 下面的代码中,用到了 controller AS 的语法,具体这种语法的使用情况,好处或是与 原来 直接在 Controller中把视图对象直接绑定到 $scope 对象上面的区别, 可以查看我之前的一片博文. 直接贴代码 <!DOCTYPE html> <html> <head> <link rel="styles…
1.broadcast 事件广播 遍历寻找所有子孙组件,假如子孙组件和componentName组件名称相同的话,则触发$emit的事件方法,数据为 params. 如果没有找到 则使用递归的方式 继续查找孙组件,直到找到为止,否则继续递归查找,直到找到最后一个都没有找到为止. 2.dispatch 查找所有父级,直到找到要找到的父组件,并在身上触发指定的事件. @param { componentName } 组件名称 @param { eventName } 事件名 @param { par…
AngularJS中的作用域scope有一个非常有层次和嵌套分明的结构. 其中它们都有一个主要的$rootScope(也就说对应的Angular应用或者ng-app),然后其他所有的作用域部分都是继承自这个$rootScope的,或者说都是嵌套在主作用域下面的.很多时候,你会发现这些作用域不会共享变量或者说都不会从另一个原型继承什么. 那么在这种情况下,如何在作用域之间通信呢?其中一个选择就是在应用程序作用域之中创建一个单例服务,然后通过这个服务处理所有子作用域的通信. 在AngularJS中还…
function DemoCtrl($scope){ $scope.count = 0; $scope.$on('myevent',function(){ $scope.count++; }) } 视图<button ng-click="$emit('myevent')"></button>向同级以上dom所在的作用域传递,就是说只有同级以上的dom里访问才能访问到count属性, <button ng-click="$broadcast('my…