(Vue.js)我想让图像1在我点击图像1时弹出,我希望图像2在我点击图像2时弹出

2024-04-11

有几个图像。我想让当我点击图片1时弹出图片1,当我点击图片2时我想让图片2弹出。我可以使用类中的索引解决它吗?

Carousel.vue

<template>
  <div v-for="(item, index) in items" :key="index">
    <img :src="item.thumbnail" />
    <button type="button" @click="imgClick()" :class="`img-index--${index}`">button-{{ index }}</button>
  </div>
  <Modal v-if="showModal" @close="showModal = false">
    <div slot="body" v-for="(item, index) in items" :key="index">
      <img :src="item.thumbnail" :class="`img-index--${index}`"/>
    </div>
  </Modal>
</template>

<script>
import Modal from './Modal.vue'
export default {
  props: {
    items: { type: Array, default: () => [] }
  },
  data() {
    return {
      showModal: false
    }
  },
  methods: {
    imgClick() {
      this.showModal = !this.showModal;
    }
  },
  components: {
    Modal: Modal
  }
}
</script>

您可以从您的数据中构建新的数据itemsprop 并注入一个新属性show: false对于每个图像。

你不需要2v-for这样循环。你可以把Modal第一个循环内的组件,只需使用item.show显示或不显示模态。

<template>
  <div>
    <div v-for="(item, index) in photos" :key="index">
      <div @click="imgClick(item)" style="cursor:pointer;>
        <img :src="item.thumbnail" />
      </div>
      <Modal v-if='item.show' @close="item.show = false">
        <div slot='body'>
          <img :src="item.thumbnail" :class="`img-index--${index}`"/>
        </div>        
      </Modal>
    </div>
  </div>
</template>
<script>
import Modal from './Modal.vue'
export default {
  props: {
    items: { type: Array, default: () => [] }
  },
  data() {
    return {
      photos: {}
    }
  },
  created() {
    this.photos = this.items.map(item => {
      return { ...item, show: false }
    })
  },
  methods: {
    imgClick(item) {
      item.show = true
    }
  },
  components: {
    Modal: Modal
  }
}
</script>

小提琴示例here https://jsfiddle.net/StpFlp_DDK/nfj5ag7x


注意:您可以将缩略图包裹在 div 内来管理点击图像。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(Vue.js)我想让图像1在我点击图像1时弹出,我希望图像2在我点击图像2时弹出 的相关文章

  • 在Vue.js中,如何选择组件的节点元素? $refs 可能吗?

    因为我想选择组件的节点元素 所以我想也许我可以使用 refs Parent
  • bootstrap-vue 与 b 表中的复选框相关的问题

    我在使复选框正常工作时遇到问题 为 选定 槽中的每一行呈现的复选框未绑定到正确的行 当您单击该复选框时 它将顶行的复选框设置为真 假位置 问题 1 如何将行复选框的真 假状态绑定到其行项目 我试图将其绑定到 data item select
  • 使用 v-bind Vue.js 的多个变量

    我试图在以下代码中传递多个变量 div div 但我收到以下错误 Vue warn 无法生成渲染函数 SyntaxError 意外的标记 在 我尝试更换 with a 但我得到 Vue warn 无法生成渲染函数 SyntaxError I
  • 根据条件添加 vue 指令

    是否可以根据条件设置指令 我有一个 粘性 指令来使元素粘在屏幕上 我有一个正在使用的社交分享组件
  • 类型“CombinedVueInstance>>”上不存在属性“XXX”

    我使用 TypeScript 创建了一个 vue 组件 并且在以下位置收到此错误data and in methods Property xxx does not exist on type CombinedVueInstance
  • 在 Vue 的“选择”选项中显示来自服务器的对象列表

    我收到 grades 变量中格式正确的成绩列表 key gt value 如何使用此变量用 Vue 填充选择选项输入 我想我必须用 绑定 vue 变量 但我才刚刚开始使用 vue 我可以找到很少的基本示例
  • Vue cli 3项目,图像路径中的动态src不起作用

    我在 vue 组件中引用图像 url 例如 img alt Vue logo src statics reports logo png 这有效 但在尝试的同时 img alt Vue logo data return imgPath sta
  • 当模型无效时,使用asp.net core返回到视图内的部分视图,并显示错误消息

    我有一个模态引导程序 我想显示引导模式的验证错误 但是 当我将模型留空并单击提交按钮时 它只是被视为独立页面 部分视图 model WebApplication1 Models Book
  • 如何使用 MFC 禁用顶级菜单项并使其变灰

    我有一个对话框应用程序 我希望在对话框顶部有可单击的菜单项 这些项目不显示下拉菜单 但实际上运行关联的命令 我通过在对话框属性中设置 Popup False 并分配消息 ID 来做到这一点 但我的问题是 当项目可点击没有意义时 无法正确禁用
  • django表单提交后触发引导模式

    提交 django 表单后如何触发弹出引导模式 在我的 index html 模板中 我有一个像这样的标准外观模式 div class modal fade div class modal dialog div class modal co
  • `success` 方法已被弃用。使用“then”方法代替

    您好 我是 Vue 世界的新手 这是我收到的警告 成功方法已被弃用 请改用 then 方法 这是代码 apiURL api movies new Vue el app data movies ready function this getM
  • 在 WinForms 中显示输入对话框

    我想在我的 WinForm 应用程序中显示输入模式 我浏览过网络 但没有找到执行此操作的良好模式 我知道我必须创建另一个表单 并使用 ShowDialog 方法 你是对的 请注意 模式对话框在关闭时不会自动处理 与非模式对话框不同 因此您需
  • 使用Vue组件渲染函数时无限循环

    我正在使用 Vue 组件来渲染一些表头 如下所示 render createElement return createElement div class header Array apply null length this initHou
  • 观察数组中当前值的变化

    每当它改变半径和中心时 我想监视每个项目 每当它改变时 我想 console log 项目索引和值 let map ref null map value circles是一个数组 当我使用此监视功能时 它仅在加载时显示一次值 我希望每次它在
  • 一个阻塞但非模态的 QDialog?

    我有一堆图像 我想对其执行一些操作 处理完每个图像后 我的程序应该弹出一个对话框 提示用户是否要继续处理下一个图像或中止 在此之前 他们应该有机会对图像或参数进行一些手动更改 无论如何 他们必须能够访问应用程序的窗口 而调用对话框的方法的执
  • 未捕获的类型错误:emit 不是 vue3 中的函数

    当我在 vue 3 设置代码块中编写此代码以获取输入值时 请遵循此answer https stackoverflow com questions 66737918 how to use v model on component in vu
  • vue.js:观察输入并未在每次按键时触发

    我有一个input正在监视其模型属性 问题是每次按键时不会调用 watch 方法铬 安卓设备 如果我点击输入文本 就会调用它 过去确实有效 但我不知道发生了什么 在Chrome 桌面版可以正常使用 那就是watch for text每次按键
  • 使用 Vue.JS 时,我们是否被迫在 CSP 中使用“unsafe-inline”?

    有没有办法让 Vue js 与 CSP 正常配合 当我运行我的spa应用程序 由npm run generate使用 Nuxt js 我会收到几个警告 例如 拒绝应用内联样式 因为它违反了以下规定 内容安全策略指令 style src se
  • Leaflet Map - 第二个多边形使第一层不可点击

    我正在制作美国社区调查数据地图 目前我有一个主要层 如下所示plotMerge incomePerCapita 它运作良好 有一个完全充实的弹出窗口 图像等等 当我添加第二层以提供县和地区边界时 区域边界变得不可单击 似乎被新层掩盖了 如果
  • vuejs2复制剪贴板问题

    我正在尝试使用https alligator io vuejs vue clipboard copy https alligator io vuejs vue clipboard copy 对于 Vue js 中的复制剪贴板功能 它对于字符

随机推荐