作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我有嵌套的子组件,我想将事件一直传播到根组件,是否有任何简单的方法来传递事件?
即
<root @custom_event="doSomething" @another_event="doSomethingElse">
<child1 @custom_event="passItAlong" @another_event="passItAlong">
<child2 @custom_event="passItAlong" @another_event="passItAlong">
<child3 @click="$emit('custom_event', 'data')">
</child3>
</child2>
</child1>
</root>
最佳答案
这里有多种选择:
this.$root.$emit
然后事件将立即发送到所有组件,您可以将其监听为 this.$root.$on
eventBus
如上所述 here然后在任何需要的地方使用它:// The most basic event bus
// Imprt vue.js
import Vue from 'vue';
// Create empty vue.js instance to use as event bus
const Bus = new Vue({});
// Export event bus instance
export default Bus;
// Using the most basic event bus
import Vue from 'vue';
import Bus from './basic';
Vue.component('my-first-component', {
methods: {
sampleClickAction() {
Bus.$emit('my-sample-event');
}
}
});
Vue.component('my-second-component', {
created() {
Bus.$on('my-sample-event', () => {
// Do something…
});
}
});
关于javascript - 不断向上链传播事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61181865/
我是一名优秀的程序员,十分优秀!