为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在子组件上面删除一项需要采用订阅发布模式通知父组件呢?直接在子组件上面删除不就行了吗?

如题,比如我要删除子组件的一项,那一项是由父组件的list里面传递过来的,需要采用订阅发布模式通知父组件才可以删除,那为什么我在这一项上添加一个click事件弹出字符串(例如:alert'hello world')则不需要通知父组件呢?

正在回答

3 回答

这么想吧 其实无论父组件还是子组件,它们都只是对应着一个dom节点而已。list中的每个<li>其实都是一个dom子节点,想删除这些动态生成的子节点,按js的逻辑,得先找到父dom节点,才能定位到子节点本身。而弹出事件本身就不是个节点,无需定位,也就不需要通知其他节点了。

0 回复 有任何疑惑可以回复我~
#1

明明的明天12 提问者

弹出事件是直接绑定在list中的每一个<li>上的,就类似于直接绑定在父组件上了,无需通知,这样理解对不对?
2018-10-16 回复 有任何疑惑可以回复我~
#2

千里明月 回复 明明的明天12 提问者

呃...其实所谓vue,react什么的框架,其根本都只是利用js对html的dom节点进行操作而已,想要操作dom节点就要找到该dom节点,所有才有class、id、tag这些选择器,但是对于动态生成的list下的li节点,它们是没有事先声明选择器的,而list节点是被组件化了,就是相当于声明了选择器,所以可以通过定位到list节点进而对其子节点进行操作(删除)。可是li子节点的点击弹出事件,是不需要这个定位流程的,因为不需要锁定dom节点啊也不用操作,所谓弹出事件,只是对浏览器行为的一个调用而已。我是基于这个层面去理解的哦,不保证一定对的哈
2018-10-16 回复 有任何疑惑可以回复我~
#3

明明的明天12 提问者 回复 千里明月

那照这样说是点击弹出事件是锁定了组件而不需锁定dom节点
2018-10-16 回复 有任何疑惑可以回复我~

删除list数组的值,在子组件的方法调用父组件的实例.list.splice(index,1)就可以实现,我理解的,老师采取向父组件传值的方式删除对应的list值,是为了向我们展示子组件向父组件传值和父组件向子组件传值的方式.能够理解监听,绑定,订阅,发布的理解

0 回复 有任何疑惑可以回复我~

弹出事件是直接绑定在list中的每一个<li>上的,就类似于直接绑定在父组件上了,无需通知,这样理解对不对

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么在子组件上面删除一项需要采用订阅发布模式通知父组件呢?直接在子组件上面删除不就行了吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信