【问题标题】:(vue.js) When clicking on an image, I want to call a modal for each image(vue.js)点击图片时,我想为每张图片调用一个模态
【发布时间】:2019-09-15 12:55:10
【问题描述】:

点击图片时,我想为每张图片调用一个模态。

目前有 3 张图片,点击图片会弹出一个没有内容的模式。

我的目录如下所示:

组件

ㅡ普通

ㅡㅡModal.vue

ㅡContent.vue

ㅡDetail.vue

App.vue

data () {
    return {
      imgItems: [
        {
          thumbnail: require('./assets/imgs/aa.jpg'),
          description: 'aa'
        },
        {
          thumbnail: require('./assets/imgs/bb.jpg'),
          description: 'bb'
        },
        {
          thumbnail: require('./assets/imgs/cc.jpg'),
          description: 'cc'
        }
      ]
    }
  }

Content.vue

<template>
  <div class="container">
    <div class="gallery">
      <ul>
        <li v-for="(item, index) in items" :key="index">
          <img :src="item.thumbnail" class="gallery-image">
          {{ item.thumbnail }}
        </li>
      </ul>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    items: { type: Array, default: () => [] }
  }
}
</script>

我希望你能帮助我。谢谢!XD

【问题讨论】:

  • 你应该关闭 img 标签/&gt; like &lt;img :src="item.thumbnail" class="gallery-image"/&gt;
  • @BoussadjraBrahim 已更正。谢谢你的评论:D

标签: vue.js modal-dialog popup v-for


【解决方案1】:

在图片中,在标签处添加一个 v-on 点击​​事件,将其链接到一个方法:

 <img :src="item.thumbnail" class="gallery-image" @click="modalHandler">

你也可以这样做:

<img :src="item.thumbnail" class="gallery-image" @click="showModal = !showModal">

然后,您必须在数据类中添加一些新数据,以切换模式:

data () {
return {
  imgItems: [
    {
      thumbnail: require('./assets/imgs/aa.jpg'),
      description: 'aa'
    },
    {
      thumbnail: require('./assets/imgs/bb.jpg'),
      description: 'bb'
    },
    {
      thumbnail: require('./assets/imgs/cc.jpg'),
      description: 'cc'
    }
  ],
  showModal: false
}

}

然后,在您的 HTML 页面上,转到 MODAL 并使用 v-if 仅在 showModal = true 时呈现它

<modal v-if="showModal">

【讨论】:

  • 添加了点击事件和数据。感谢您的反馈。 :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
  • 2014-12-17
  • 2017-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多