vue.js - 如何将 v-for 数据传递到 VueJS 中的模态
问题描述
列出我的帖子后,我想制作一个模式,打开时会从该帖子中获取 youtube id,并将其粘贴到 b-embed src 链接中,以显示与帖子对应的 youtube 视频
<template>
<div>
<ul>
<li id="posts" v-for="post in posts" v-bind:key="post.name">
<b-card no-body style="max-width: 20rem;" class="md-elevation-12" v-if="post.tag === 'game'">
<b-card-body>
<md-card-media>
<img :src="
'http://img.youtube.com/vi/' + post.yturl + '/hqdefault.jpg'
" />
</md-card-media>
<b-card-title>{{ post.name }}</b-card-title>
<b-card-text></b-card-text>
</b-card-body>
<b-card-body>
<b-button v-b-modal.modal-xl="'game'" @click="sendInfo(post)" variant="outline-secondary">Xem</b-button>
</b-card-body>
</b-card>
</li>
</ul>
<b-modal size="xl" id="game" :title="selectedPost.name">
<b-embed type="iframe" aspect="16by9" :src="'https://www.youtube.com/embed/' + selectedPost.yturl" allowfullscreen></b-embed>
</b-modal>
</div>
</template>
<script>
import db from "@/db";
export default {
name: "GameView",
name: "MediaCover",
data() {
return {
showDialog: false,
posts: [],
selectedPost: '',
playerVars: {
autoplay: 0,
},
};
},
methods: {
playing() {},
modalId(i) {
return "game";
},
sendInfo(post) {
this.selectedPost = post;
},
},
props: {
msg: String,
},
created() {
db.collection("holoposts")
.orderBy("date")
.get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
this.posts.push(doc.data());
});
});
},
};
</script>
但是正如您所看到的,它遇到了无法指定 yturl 的问题,因为模态在 v-for 之外。如果我把它放在里面,模式会循环打开所有的帖子。
编辑既然解决了,我将把上面的代码编辑成正确的,这样任何人都可以看到
解决方案
需要一个单一的模式,当所选帖子发生变化时,只是内容发生变化。你可以尝试这样的事情:
<b-button v-b-modal.modal-xl="'game'" click="sendInfo(post)"
<!-- -->
<b-modal size="xl" id="game">
<b-embed v-if="selectedPost" type="iframe" aspect="16by9" :src="'https://www.youtube.com/embed/' + selectedPost.yturl" allowfullscreen></b-embed>
</b-modal>
并确保从 data() 返回 selectedPost,不知道为什么它在外面。
推荐阅读
- node.js - 为“/favorites”URI 实现 Express router(),使其支持 GET、POST 和 DELETE 操作
- javascript - <> 和之间的区别
- java - 模拟来自父类的方法以返回模拟数据
- azure - 如何测量我在 Azure 认知服务语音合成 (TTS) 中使用的字符?
- python - 如何不断更新熊猫数据框中的新值
- airflow - 开始时间/结束时间的气流 ts 宏
- javascript - 带有 [对象对象] 的文本区域
- c# - 使用 Godaddy 共享主机在 Asp.net 核心 MVC 中发送邮件问题
- php - 带有 PHP artisan 和 ngrok 的 Botman Studio 本地图像附件
- windows - Windows 中的路径长度限制 - 没有任何效果