Event 事件

事件是为了解耦...

注册事件

使用"on add"添加属性,注册事件 使用on方法注册事件. 第三个参数$data是监听函数使用的参数, 第四个$append参数设置为false则把改事件的方法给添加到最前面,会先触发 事件种类: 匿名函数:function($event){} 对象方法:[$object,"handleAdd"] 静态类方法:["Page","handleAdd"] 全局函数:"handleAdd"

       namespace frontend\tests;use yii\base\Component;class EventTest extends Component{}$a = new EventTest();$p = "on add";$a->$p = function($event){print "匿名函数";}function add($event){print "全局函数";}$a->on("add", "add");$a->trigger("add");

触发事件

触发事件的时候,会传送一个$event对象给监听函数.该事件对象有sender.name.$handled和data以及$_events属性 sender 就是组件本身,事件的发送者 name 事件名称 handled 设置该属性可以阻止事件的继续触发..比如判断登录错误.验证一个事件时出现错误.把这个设置为true.就不会继续传播了 $_events 存储的数据是$_events[$name][$class] 事件名...类名..最后会根据类名再循环找到所有的父类的事件

        $this->ensureBehaviors();  //确保自身behaviors()函数中的行为被添加if (!empty($this->_events[$name])) {if ($event === null) {$event = new Event;}if ($event->sender === null) {$event->sender = $this;}$event->handled = false;$event->name = $name;foreach ($this->_events[$name] as $handler) {$event->data = $handler[1];call_user_func($handler[0], $event);// stop further handling if the event is handledif ($event->handled) {   //如果false则直接返回return;}}}// invoke class-level attached handlersEvent::trigger($this, $name, $event);//执行事件本身的events,

注意最后一步,你可以为某个有继承关系的类自定义一个事件..这里会执行父类的事件

移除事件

使用off移除事件.没什么好说的了

Behavior 行为

无论是事件还是行为,经常能够看到这个方法ensureBehaviors() 该方法确保该组件默认的behaviors()方法中的组件总是被加载的... 没弄明白,yii作者为什么这么写...放在构造函数中执行一次不是更好...

行为的使用

  • 1.行为中的属性,在该类中也可以使用
  • 2.行为中的方法,在该类中也可以使用
  • 3.继承与Behavior类的行为,会将其自身的$_events中的事件绑定到该类

注册行为

attachBehavior,attachBehaviors 这两个首先会执行ensureBehaviors()确保自身的行为一定会被加载..

yii2中的事件和行为相关推荐

  1. 处理 react_【学习教程】React 中阻止事件冒泡的问题

    来源 | https://www.cnblogs.com/Wayou/p/react_event_issue.html 在正式开始前,先来看看 js 中事件的触发与事件处理器的执行. js 中事件的监 ...

  2. ASP.NET 2.0中Page事件的执行顺序

    Page 执行中将按照如下顺序激活事件: Page.PreInit Page.Init Page.InitComplite Page.PreLoad Page.Load Page.LoadComple ...

  3. 「前端面试题系列7」Javascript 中的事件机制(从原生到框架)

    前言 这是前端面试题系列的第 7 篇,你可能错过了前面的篇章,可以在这里找到: 理解函数的柯里化 ES6 中箭头函数的用法 this 的原理以及用法 伪类与伪元素的区别及实战 如何实现一个圣杯布局? ...

  4. 这就是为什么我们需要在React的类组件中绑定事件处理程序

    by Saurabh Misra 索拉·米斯拉(Saurabh Misra) 这就是为什么我们需要在React的类组件中绑定事件处理程序 (This is why we need to bind ev ...

  5. MVVM开发模式MVVM Light Toolkit中使用事件和参数传递

    Light中定义了类GalaSoft.MvvmLight.Command.RelayCommand 这个类继承了ICommand方法,实现了其中的方法,Action就是一个方法参数 // 摘要: // ...

  6. jQuery中的事件机制深入浅出

    昨天呢,我们大家一起分享了jQuery中的样式选择器,那么今天我们就来看一下jQuery中的事件机制,其实,jQuery中的事件机制与JavaScript中的事件机制区别是不大的,只是,JavaScr ...

  7. java中事件监听_Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  8. echarts y轴添加点击事件_ECharts中的事件和行为

    用户在操作 Echarts 的图表时会触发相应的事件,这些事件由开发者监听,然后回调函数做出相应的处理,可以弹出一个对话框.跳转到一个地址或者做数据下钻等等. ECharts 3 中绑定事件跟 Ech ...

  9. JQuery中的事件和选择器

    学习jQuery最应该了解的也就是JQuery中的事件和选择器. 那么常见的事件有哪些: 鼠标事件:mousedown鼠标按下,mouseup鼠标松开,mouseenter鼠标进入某个元素 mouse ...

最新文章

  1. 数据量很大,分页查询很慢,怎么破?
  2. 两篇关于MCU的嵌入式应用的文章【ZZ】
  3. php session 保存数组,php - 我用ajax设置的SESSION数组变量没有被保存?
  4. python 获取li的内容_Python开发案例:爬取四川省统计局数据Matplotlib绘图
  5. 《CLIP2Video》-腾讯PCG提出CLIP2Video,基于CLIP解决视频文本检索问题,性能SOTA!代码已开源!...
  6. Java 设计模式之Facade门面模式
  7. python接管已经打开的浏览器_Python Webdriver 从新使用已经打开的浏览器实例
  8. java ajax文字搜素,JAVA-WEB AJAX 搜索条自动提示
  9. sqrt numpy_NumPy sqrt()–矩阵元素的平方根
  10. Linux中的ps命令
  11. 【转载】SAP用户出口清单(User Exits)
  12. 数学建模案例【人口模型 】(马尔萨斯人口模型,Logistic模型)
  13. python +appium实现原理_Appium+python自动化(四十)-Appium自动化测试框架综合实践 - 代码实现(超详解)...
  14. 利用dpdk rte_ring实现进程间通信
  15. GitHub 被超火的 ChatGPT 霸榜!
  16. GCN笔记:Graph Convolution Neural Network,ChebNet
  17. 旧作 一剪梅•秋夜
  18. JavaWeb(4)JavaScript高级
  19. 3.7V锂电池充满电时是多少伏?
  20. 木马编程DIY (Delphi版) - 第3篇 星号密码查看工具

热门文章

  1. 高中计算机应用基础试讲,试讲计算机应用基础.ppt
  2. centos 对已有卷扩容_CentOS LVM 新加硬盘,扩容逻辑卷步骤
  3. 直播预告丨深耕用户价值,实战保险业数字化升级
  4. 大咖说:React Native 全埋点实现原理(内附赠书)
  5. 今天,神策数据官网银行 Demo 正式上线!
  6. 如何不编程,采集网站评论信息?(视频教程)
  7. 合理的使用纯函数式编程
  8. BZOJ 3990: [SDOI2015]排序(搜索+剪枝)
  9. 【MFC两种视频图像採集方法】DirectShow与Opencv
  10. 获取Docker中容器的信息