博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angularjs中的事件传播$emit,$broadcast,$on
阅读量:4546 次
发布时间:2019-06-08

本文共 2252 字,大约阅读时间需要 7 分钟。

在这里写的技术点 一部分参考AngularJs权威教程一部分参考的是其它的博主的知识点

事件 :如同浏览器响应浏览器层的事件,比如鼠标点击、页面滚动那样,Angular应用也可以响应Angular事件.

       这使我们在我们应用中嵌套各组件之间进行通信,即使这些组件在创建的时候并未考虑其他组件.我们可以认为事件是在应用中传播的事件信息片段,通常包含应用中发生的事件信息  

注意: AnjularJs事件系统并不与浏览器中的事件系统相通,这意问着我们只能在作用域上监听Angular事件而不是在DOM事件

1.$emit事件函数的调用中,事件从子作用域冒泡到父作用域

   $emit()函数可以接受两个参数 

  • name(字符串 要发生的事件的名字)
  • args(集合 一个参数的集合,作为对象传递到事件监听器中。)
  • 从监听器中发出的切异常都会传递到$exceptionHandler服务中

2.$broadcast事件的函数调用中是向下传递事件 其参数和$emit一样

3.$on事件的监听  on参数

  • 进行监听的事件的名字
  • 函数 (event ,data)  data 是事件中所传递的信息 event 则是事件对象  

4.事件对象的属性() 这些可以通过函数event对象进行操作

  • targetScope(作用域对象)这个属性是发送或者广播事件的作用域。
  • currentScope(作用域对象)这个对象包含了当前处理事件的作用域。
  •  name(字符串)这个字符串是触发之后,我们正在处理的事件名称。
  • stopPropagation(函数)stopPropagation()函数取消通过$emit触发的事件的进一步传播。
  • preventDefault(函数)preventDefault把defaultPrevented标志设置为true。尽管不能停止事件的传播,我们可以告诉子作用域无需处理这个事件(也就是说,可以安全地忽略它们)。
  • defaultPrevented(布尔值) 调用preventDefault()会把defaultPrevented设置为true。

5.核心系统的$emitted事件

  •   $includeContentLoaded    $includeContentLoaded事件当ngInclude的内容重新加载时,从ngInclude指令上触发。
  •  $includeContentRequested  $includeContentRequested事件从调用ngInclude的作用域上发送。每次ngInclude的内容 被请求时,它都会被发送。
  •  $viewContentLoaded      $viewContentLoaded事件每当ngView内容被重新加载时,从当前ngView作用域上发送。

6.核心系统的$broadcast事件

  •  $locationChangeStart 当Angular从$location服务(通过$location.path()、$location.search()等)对浏览器 的地址作更新时,会触发$locationChangeStart事件。
  •  $locationChangeSuccess 当且仅当浏览器的地址成功变更,又没有阻止$locationChangeStart事件的情况下,$locationChangeSuccess事件会从$rootScope上广播出来。
  • $routeChangeStart 在路由变更发生之前,$routeChangeStart事件从$rootScope发送出来。也就是在路由服务开始解析路由变更所需的所有依赖项时。
  • $routeChangeSuccess    在所有路由依赖项跟着$routeChangeStart 被解析之后, $routeChangeSuccess 被从$rootScope上广播出来。ngView指令使    用$routeChangeSuccess事件来获悉何时实例化控制器并渲染视图。                          
  •  $routeChangeError 如果路由对象上任意的resolve属性被拒绝了,$routeChangeError就会被触发(比如它们失  败了)。这个事件是从$rootScope上广播出来的。
  •  $routeUpdate   如果$routeProvider上的reloadOnSearch属性被设置成false,并且使用了控制器的同一个实例,$routeUpdate事件会被从$rootScope上广播。
  •  $destroy 在作用域被销毁之前,$destroy事件会在作用域上广播。这个顺序给子作用域一个机会,在父作用域被真正移除之前清理自身。

关于代码的测试

http练习
自己的 子级作用域
自己的平级作用域

 

 

转载于:https://www.cnblogs.com/hu-bo/p/6362687.html

你可能感兴趣的文章
一些基础语法
查看>>
win10企业版无法访问共享文件夹
查看>>
查行号
查看>>
《学习之道》第三章学习方法12批评使我们更优秀
查看>>
猫眼首页
查看>>
java面试题之数据基本类型各占几个字节
查看>>
设计模式(总纲)
查看>>
线程池技术
查看>>
http后台json解析实例
查看>>
iOS中延时执行方法的比较和汇总
查看>>
1284 2 3 5 7的倍数
查看>>
php 手记
查看>>
设计模式-注册树模式
查看>>
Unity基本API总览
查看>>
如何将一段文本编译成C#内存程序的过程
查看>>
PAT——1070. 结绳
查看>>
【23.33%】【codeforces 664C】International Olympiad
查看>>
java-网络编程-使用URLDecoder和URLEncoder
查看>>
最短路之dijkstra算法
查看>>
SHDP--Working With HBase (二)之HBase JDBC驱动Phoenix与SpringJDBCTemplate的集成
查看>>