javascript - Vue js在三个组件之间发射?
问题描述
我有一个 Card 组件,它在单击时会发出一个字符串,然后我的 carousel 组件会将卡发出的字符串发送回其父级。卡片组件发出工作正常,但轮播组件不起作用。
卡发射:
<div class="card m-0 p-0" @click="$emit('setMovie', movieKey)">
从旋转木马发射:
<div class="carousel-item active">
<div class="row ml-1">
<h1>{{selectedMovie}}</h1>
<MovieCard v-for="m in movies" :key="m.MovieKey" @setMovie="$emit('setMovie', movieKey)"/>
</div>
</div>
Home 组件(未检测到来自 Carousel 的发射):
<Carousel v-bind:movies="movies" @setMovie="test"/>
methods: {
test(){
this.testData = "movie changed";
}
}
在 Home 组件上未检测到 Carousel @setMovie 发射。
解决方案
您可以在 Vue 中使用 EventBus 实现。您将从一个组件中的方法(或您想要的任何地方)发出一个事件,并且您将在其他组件的 lyfecycle 挂钩期间注册侦听器。
推荐阅读
- python-3.x - Python - 查找具有匹配值的对象
- javascript - 如何使用最基本的 JavaScript 工具构建幻灯片
- java - 错误:当我需要通过休眠生成实体时
- safari - CSS 旋转、平移、缩放动画错误
- javascript - 强制安装 npm 包依赖项不起作用
- excel - 将保存的文件附加到 Outlook 电子邮件的 VBA 代码
- javascript - 为什么我的代码可以在除 Safari 之外的所有浏览器中播放视频?
- python - 标记最后一组项目数据框
- r - ggplot2中的轴偏移
- git - 批处理文件中的 Git 命令通过 VSTS 运行并引发错误