00:00
好了,各位说完了全局事件总线之后呢,我们就把todo list这个案例里边两个地方给它改成全局事件总线的写法,所以说接下来呢,这些东西我就都不要了,找到之前写的todo list案例,把这些东西给它复制,往这儿粘贴,接下来我们分析一下应该把这里边哪两个地方改成全局事件总线比较合适,我知道啊,有些同学可能说老师不用分析,你随便找两个组件就行,因为你说过全局事件总线适用于任意组件间通信,我随便找两个那就可以了呀。啊,理论上确实可行,但是同学有些时候你没有必要去麻烦这个全局时间总线,你比如说父想给子传递点东西,同学用什么就最方便呀,当然是props,对吧?父给子传,同学,你就不用想别的了,用props最简单,说老师,那子想给父传呢?各位子想给父传,我问你用props行不行?
01:00
行啊,父亲先给儿子一个函数,儿子呢,合适的时候调这函数,数据不就过去了吗?或者说你用这个也行,咱最早之前讲的用那个自定义事件可不可以,也可以说老师,那我就想用一下全局事件总线在这儿行不行呢?行,但是没有必要,对不?各位哎,来这里边啊,有这么一个场景,比较适用于用全局事件总线去写哪个场景的同学,这两个组件之间打交道,就是item和谁呢?APP,我们一起回顾一下之前你的item是怎么给APP传递数据的,APP打开各位,由于数据在人家这儿,所以说对todo的什么添加呀,勾选呀,删除啊,全选呀,或者是清空啊,这些方法是不是都得写在这儿,咱们之前说过数据在哪里,那么操作数据的方法是不是就在哪里啊?之前你是这么写的啊,瞧着你把勾选一个todo和删除一个todo这两个方法你传给谁了呢?你传给list了,但是我们心里。
02:00
明白各位,这个list组件收到这两个东西,其实他自己不用,它是转手就交给了自己的子组件,对不来,你看一下打开list子组件收没收到,收到了自己用吗?不用紧随其后就把这两个东西,诶是不是传给了自己的子组件,那么子组件在这咋的再去接收,接收完了呢?在这用,在这用同学有没有一种逐层传递的感觉,红的是APP粉的是谁,List粉的里边是谁?绿色的item,那同学你不就是这么逐层的往下传的吗?啊,那你在这同学就别一点一点传了,最好用谁全局时间总线,也就是说让你绿色的item组件能够直接和谁进行对话呢?APP是这意思不?各位,哎,所以说接下来谢写,那么第一步各位是不是得安装全局时间总线,所以说借助哪个钩子来着叫做before create里边怎么写来着?view.protype原型对象找到Dollar。
03:00
Bus,你换别的名也行,但是最好用这个等于this,对不?当前的VM嘛,OK,全局事件总线安装完毕,那么接下来呢,各位啊,你不要考虑到这儿说老师把它删了吧,同学,这些东西是不可能删的,因为数据在这儿呢,你说对不?哎,你要做的不是删掉这个方法,而是这个方法不要再给谁传了,不要再给list传了,一个勾选一个删除,不要再给list传了,那既然没有给list传,那我问你list在这儿呢,是不是也就不应该再去接收了呀,你收不到了吗?删掉,那把注释呢,这会儿也给它删掉,对吧,咱就不用说其中谁是自己用的了,传过来的都是我自己用的,我自己不用的,压根儿我也没接收,对不?各位删掉,那同理,这两行呢,是不是也删掉?OK,那找到item这儿,各位我问你这个东西收不到了吧,这个呢,收不到了吧,那这些给它删掉,那同理这块是不是也删掉,那你这只是光删掉了,那接下来是不得用。
04:00
总线去实现通信呀,那同学琢磨一下吧,谁给谁传递数据呀,好像是item要给APP传递数据对吗?Item们给APP传递什么呢?勾选的时候传ID,以及删除的时候传ID,你说对吧?各位,所以说整明白了谁收数据谁发数据,那么我问各位收数据的人应该怎么办呀?去绑定事件总线身上的那个自定义事件对不对?诶什么时候绑定呢?咱说了MOUNT1挂载就绑定最合适对不?各位?所以说来瞧着data折叠,MYS折叠,Watch折叠,接下来要写一个钩子,叫做mounted,只要APP1挂载,我就this.dollar bus找到那个全局事件总线啊,然后呢,Dollar符啊,给它绑定一个啊勾选的对吧?你当然可以随意去写,但是最好呢,跟这个名字让他一样,对,不便于理解嘛,Check todo,那如果有一天这个check todo事件被触发了,那我得调哪个函数?
05:00
那当然是this,点找到谁呢?这个check todo,这不就可以了吗?再来一行同学,这不叫check todo,叫做delete todo,那同理这会儿也得是delete,对不?各位哎,这不就是绑定完事件了吗?但咱说过最好在这个组件即将被销毁的时候,也就是在这儿before destroy里面你进行什么呢?进行解绑,所以说在这儿写,把它改成什么呢?Off,然后解绑谁呢?Check todo,同理还得解绑另外一个人,谁呢?就是delete todo,这才是一个完整的写法,比较好的写法,OK,好,那接下来这些东西写完了,那接下来呢,是不是得去item里边去触发呀?什么时候触发呢?就是在这儿,你想勾选的时候,各位别这么写了,那咋写this.dollar bus,找到那个人,点dollarmate是不是触发那个事件呀?哪个事件呢,就是check todo,那得把谁带过去呢?ID呗,对吧,那这会儿呢,主调同理,这个一复制往这一写,各位来缩进呢,给它。
06:00
调一下这块主调,我触发的不再是check todo了,而是delete todo,同样的也得传谁过去呢?ID这不就写完了吗?各位感觉一下对吧,没有麻烦中间的这个list啊,借助的是谁呢?这个全局时间总线Dollar bus来我们先看一下效果啊,打开走空台开好刷新,我先添加几个,比如说吃饭睡觉,再来一个学习,OK3个都添加上了吧,其实各位我们心里边明白这个hier组件和APP打交道的时候,来就这两个,这个hier和这个APP打交道的时候,其实当年我们用的什么写法呢?就是自定义事件,因为他俩是父子嘛啊,所以说借助VU的开发者工具啊,咱能看到各位刷新一波,选择第三个看事件视图来我再写一个,比如说叫做玩游戏,注意看啊走,你看爱的todo同学,这个本质上它就是一个自定义事件,对不对?哎,说谁出发的呀,My header,好了,接下来看着。
07:00
我想勾选一个,你瞧好了,比如说睡觉,我想勾选走你同学我是不是勾选了,你看这个todo对不啊,全局事件总线的本质,各位不就是自定义事件吗?只不过是给谁绑定的呀,Dollar bus绑定的是不?各位诶,那Dollar bus是谁呢?你写过这篇代码啊,各位来找到命里边Dollar bus不就是当前的VM吗?所以说你瞧瞧各位啊,I的todo,人家说触发事件的是MY这个组件实力对象没毛病吧,但是你看check todo呢,他说是root,其实这个root指的是谁?就是Dollar for bus就是谁呢?VM对不?各位你看一个这不就勾选了吗?啊说老师,那我想删除可以,比如说点这个学习删除确定吗?确定同学,你看delete todo触发的人又是谁呢?Route如果在这你见到了,说触发事件的人呢,是route,那么多半意味着这个东西呢,就是作为事件总线去用了啊,刷新一波走看功能依然在,是不?各位这不就写完了吗?好,这小节呢,我们停。
我来说两句