对于一款前端框架,提起事件,很容易让人联想到DOM事件,比如说鼠标点击以及页面滚动等。但是我们这里说的angular中的事件和DOM事件并不是一个东西。

事件的发布

我们可以通过 $emit()

以及 $broadcast() 来发布事件

$emit(name, args)

name 发布的事件名称
      args 会作为对象传递到事件的监听器中
      $emit() 发布的事件,会从子作用域冒泡到父作用域,产生事件的作用域之上的所有作用域都会收到这个事件的通知。

$broadcast(name, args)

同 $emit 的参数一直,name 作为事件的名字,args 作为监听器接受 的参数。使用该方法事件的传播方向是从上至下,即从父作用域到子作用域。

事件的监听

事件发布了,我们要注册监听事件的服务,才会对事件进行响应
    可以通过 $on() 方法来注册事件监听事件。

$scope.$on(name, listenerFn)

当以 name 为事件名的事件被促发之后,listenerFn 事件就会被执行。
      $on() 返回一个反注册函数,可以用其来取消监听器。

事件对象

所有的事件监听器第一个参数都代表了事件对象,该对象有以下属性:
    targetScope 作用域对象,发送事件的作用域
    currentScope :当前处理事件的作用域
    name: 当前事件的事件的名称
    stopPropagation: 取消$emit触发的事件进一步的传播
    preventDefaul:  把defaultPreevented标志设置为true,告诉子作用域可以无需处理该事件。
    defaultPreevented:布尔值
    angular: 内置事件
    $includeContentLoaded($emit事件)
    ngInclude内容重新加载的时候,从ngInclude指令触发

$includeContentRequested($emit事件)

从调用ngInclude的作用域上发送,每次ngInclude的内容被请求的时候,都会发布该事件

$viewContentLoaded($emit事件)

当ngView内容被重新加载时,从ngView作用域上发布

$locationChangeStart($broadcast事件)

通过$location服务对浏览器的地址更新时会触发$locationChangeStart事件

$locationChangeSuccess($broadcast事件)

当浏览器的地址成功变更时触发

$routeChangeStart($broadcast事件)

在路由变更发生之前,该事件从$rootScope发布

最新文章

  1. Oracle之常见问题诊断方法
  2. ccs3
  3. final .....finally ...... 和Finalize ......区别
  4. Ubuntu下Apache+php+mysql网站架设详解
  5. HDU 4597 Play Game (DP,记忆化搜索,博弈)
  6. 访问权限PPP(public、private、protected、default)之成员变量、成员变量权限解析
  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用
  8. 使用JasperReport+iReport进行Web报表开发
  9. [iOS] file patterns: The `public_header_files` pattern did not match any file.
  10. Java基础中一些容易被忽视的语法小细节总结
  11. vue2 兼容ie8
  12. weblogic的web.xml报错----Malformed UTF-8 char -- is an XML encoding declaration missing
  13. Intel x86_64 Architecture Background 2
  14. 表单控件 css的三中引入方式css选择器
  15. bzoj 2784 [JLOI2012]时间流逝——树上高斯消元
  16. Java并发编程原理与实战二十三:Condition原理分析
  17. Twitter.com在用哪些Javascript框架?
  18. bzoj1611 / P2895 [USACO08FEB]流星雨Meteor Shower
  19. 山东省第四届ACM程序设计竞赛A题:Rescue The Princess
  20. 解决:“Workbench has not been created yet” error in eclipse plugin programming”,OSGI启动控制台报错问题

热门文章

  1. 通过全局设置过滤器,就能让所有窗口都可移动,而不是都要继承指定QDialog
  2. DOM、SAX、JDOM、DOM4J四种XML解析方法PK
  3. css“变形”效果
  4. C#中string.Empty ,"" , null 区别
  5. 20145211 《Java程序设计》第6周学习总结——三笑徒然当一痴
  6. JavaScript学习之cookies
  7. Docker镜像的创建、存出、载入
  8. Docker镜像的获取与删除
  9. [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}
  10. Swift vs. Objective-C:未来看好 Swift 的十个理由