我有一个父级,我可以在其中动态添加子组件。
当在挂载中添加子组件时,我为事件注册一个侦听器
EventBus.$on('content-type-saving', function() {
logic here...
}
问题是,当通过从子组件数组中删除该组件而在父组件中删除该组件时,该组件仍然会触发并且其内部的代码会运行。
我怎样才能防止这种情况发生?我试过这个
beforeDestroy() {
//do something before destroying vue instance
EventBus.$off('content-type-saving')
}
但这也关闭了所有其他子组件的该事件,因此那些仍然存在的子组件将不再执行逻辑操作,因为我关闭了被破坏的子组件中的事件。
我认为如果我关闭一个事件,它只会影响该子组件的该事件的侦听,而不会打开所有子组件的事件。
如何阻止被破坏的组件对事件做出反应?
你打电话时$off
仅包含活动名称,all听众被删除 https://v2.vuejs.org/v2/api/#vm-off对于指定的事件。
相反,您只想删除正在侦听的组件的事件。你的组件应该看起来像这样:
const component = {
methods:{
listener(){
//do something on event
}
},
created(){
EventBus.$on('content-type-saving', this.listener)
},
beforeDestroy(){
EventBus.$off('content-type-saving', this.listener)
}
}
这将仅删除当前组件的特定侦听器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)