00:00
好嘞,各位,接下来呢,就是一个固定的套路了,我要把todo list的这个案例里边的一个功能啊,用消息订阅呢去写一下,那我就把这些东西全都给它清掉,找到todo list复制过来,我们把这个功能用消息订阅去写一下,就是item组件里面不是有一个删除吗?哎,把它用消息订阅去写一下,那就马上考虑一个问题,哪个组件需要数据,哪个组件提供数据,这里就很明显了,各位APP组件需要数据,需要什么呢?删除的那个ID,哪个组件提供这ID呢?很明显是item,所以说需要数据的地方订阅消息啊,提供数据的地方呢,发布消息就可以了,打开APP咱先写写订阅,首先第一件事儿,你得引入pop萨那个库,对吧,一般来说啊,各位,我们在引入库的时候,如果是第三方的往上考,如果是咱自己写的呢,一般往下考啊这。
01:00
这点V呢,写不写都行,我就把它删掉了,好什么时候去订阅呀,组件挂载完毕就去订阅,所以说你得找到mount的,那么之前的这个删除啊,我是用全局事件总线写的,那这呢就不要了,那这呢也不要了,接下来去订阅就可以了,对吧?调这个apiscript,那你想一个消息的名字吧,各位啊,既然是删除,那就叫做delete图do啊,然后同学,如果有人发布了这个消息,你得给他一个回调吧,那回调在哪儿呢?这儿已经写好了,对不?同学,这些东西是真正能完成功能的,至于说这些东西你什么时候用,那就是由你决定了,你是把这些东西传给子组件,还是说什么自定义事件被触发的时候执行这个,还是说什么消息被发布的时候触发这个,对不?哎,这是属于功能区,把这些函数呢或者方法给它准备好,一会咱们用就得了,所以说把这个拿过来复制在这呢,写一下叫做this,点点delete todo。但是个。
02:00
各位,值得你注意的一个地方就是这个delete todo你不能直接用哦,为什么呢?因为我们知道,如果说你把这个delete todo作为一个消息的回调去使用,它其实能接收到两个参数,不仅仅是你传递的ID,咱说了前边还能收到一个是不是消息的名字呀,对不?你得在这占个位,然后这ID才是真正你传过来的ID,对不?各位啊,但是有些时候同学就是这个参数啊,明明我们不需要说老师,那不需要,你也得占个位啊,那就这么写着吧,倒也行,但你看它是灰色的,意思就是什么呢?它没有被使用,你声明了,但没有被使用,这就不太好啊,一般来说我们这么做,各位用这个下划线啊去占个位,而且你看占位的时候下划线是亮的,哎,意思就是我占个位啊,前面有第一个参数,但是我不用,我得占个位才能保证我收到的是正常参数对不?哎,有的时候也这么写,我就在这用下划线占个位,OK,这回就可以了,来折叠起来,同学们。
03:00
解完啊,不能说你订阅完了你就不管了,咱们都知道订阅完了最好在组件将要被销毁之前,是不是得取消订阅呀,前边加个UN,后边不用再指定回调了,但是我需要的可不是消息名,是消息的ID对吧?所以说在这儿this.popb ID等于这个,然后呢,把这I呢给它大写小驼峰,那然后在这儿呢,你就可以直接这么写了,对不对?哎,挂载完毕,我就订阅消息,如果你即将被销毁了,那我就取消订阅,这样的话逻辑比较完整,OK,订阅写完了,接下来呢,发布呗,那划到这儿,各位,当你确定删除之后,不要再写这个了啊,那怎么写呢?还得引入pop萨走,然后呢,借助他身上的这么一个API pub sub点叫做publish发布消息,发布什么消息呢?Delete todo,那带着什么数据呢?当然是那个ID对吧,各位其实。
04:00
那你看看我们之前这么写呀,是用父亲那边辛辛苦苦传过来的delete图do,我们亲自去调,那这种写法呢,就是属于借助全局事件总线是不?哎,我写的delete todo,这个叫做事件名,同学,这叫函数名,父亲那边传过来的函数,这叫什么呀?这叫自定义事件的事件名,这叫什么呀?各位啊,订阅消息的消息名对吧?后边肯定都得跟着数据是不?所以说同学你觉不觉得其实就是保证啊,你通过某种渠道能把这个ID给人家递过去就可以,至于说哪种渠道,其实无所谓的对不?各位,OK,你这么一写呀,删除功能呢,就写完了,来我们看一下效果啊,刷新一下各位,刚才呢,我又给大家补了两个啊,睡觉和吃饭,来,我删除一个吃饭确定吗?确定OK,这不就删了吗?然后呢,可能有一些同学啊,有这个需求说老师,那你看当你每一次删除一个todo的时候,你不是利用了消息的订阅与发布吗?那我能不能借助开发者工具去。
05:00
看到这个消息,什么时候订阅了,发布的是哪个消息呢?各位借助VI的开发者工具,你注意是看不到的,VI的开发者工具啊,确实有第三个选项,但是这个里面人家能看到的是全局事件总线身上的那个自定义事件,以及呢,你父给子绑定的这个自定义事件,你就比如说各位我的添加todo当年是拿那个自定义事件写的,对不对,你比如说我写一个学习走,各位那你看能看到这个爱todo,但是如果说你删除的时候,各位你注意看我点击删除,这是没有体现的,因为pop up是一个第三方的库啊,View的开发者工具呢,不支持它,OK,诶所以说这会儿你要注意一下,好,那这一小节呢,我们停。
我来说两句