vue.js - 如何将图像 src 传递到 Vue 中的模态对话框(以便缩放单击的图像)?

标签 vue.js vuejs2 vue-component vuetify.js

我想做的是在点击时缩放图像,想法是:

  • 你点击了一张图片
  • width=85vw 的对话框会打开,其中显示您刚刚在其中单击的图像(因此图像现在几乎全屏显示)

我想不出更好的方法来在点击时“缩放”图像,但在模式对话框中打开它(如果有更简单的方法,请告诉我)。

代码:

 <v-dialog v-model="dialog" max-width="85vw" >
     <img :src="img1" alt="" width="100%" @click.stop="dialog=false">
 </v-dialog>
                
 <img :src="img1" width="500px"  @click.stop="dialog = true">
 <img :src="img2" width="500px"  @click.stop="dialog = true">
 <img :src="img3" width="500px"  @click.stop="dialog = true">
 export default {
     data() {
         img1: "../../src/assets/pexels-photo-373912.jpg",
         img2: "../../src/assets/pexels-photo-373912.jpg",
         img3: "../../src/assets/pexels-photo-373912.jpg"
     }
 }

问题是,它不会在对话框中打开任何单击的图像,只会打开您在其中硬编码的图像,在此示例中,无论您单击什么图像,它都会始终打开 img1

我不知道如何将 :src 动态传递到对话框中 - 您单击的图像的 :src

附言v-dialog 是 Vuetify.js 库中的一个组件


问题:

  • 是否有明显更好的方法?
  • 如果不是真的,我如何让这个方法起作用并显示我在模态对话框中单击的图像?

最佳答案

您需要一个变量来保存选择的图像。当您单击图像时,它应该将变量设置为该图像的 url。当您单击对话框图像时,它应该取消设置变量。

对话框应该在设置变量时显示,否则隐藏。

为简单起见,我没有使用实际的对话框,只是一个 div。看起来您会将其用于对话框的 v-model 而不是使用我使用的 v-if

new Vue({
  el: '#app',
  data: {
    selectedImage: null,
    images: [
      'http://via.placeholder.com/400x300?text=image%201',
      'http://via.placeholder.com/600x400?text=image%202',
      'http://via.placeholder.com/500x500?text=image%203'
    ]
  },
  methods: {
    zoom(url) {
      console.log("Zoom", url);
      this.selectedImage = url;
    }
  }
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script>
<div id="app">
  <div v-if="selectedImage" max-width="85vw">
    <img :src="selectedImage" alt="" width="100%" @click.stop="selectedImage = null">
    <hr>
  </div>

  <div v-for="url in images">
    <img :src="url" width="100px" @click="zoom(url)">
  </div>
</div>

关于vue.js - 如何将图像 src 传递到 Vue 中的模态对话框(以便缩放单击的图像)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48069232/

相关文章:

typescript - Axios、Typescript 和 Promises

javascript - 我可以在 Vue 实例方法内部传播的 mapMutations 中使用 "this"吗?

javascript - 如何在 Vue Js 中将数据值从一个组件更改为另一个组件?

vue.js - 使用保存和取消选项编辑表单

javascript - 如何将 props 值从 Vue 组件传递给 JS 函数

javascript - 如何使用 Vue/JavaScript 在移动设备上触发长按(单击并按住)

reactjs - 在 Laravel 中一起使用 React.js 和 Vue.js

vue.js - 在其他条件类之上应用 vue.js 中计算的动态 CSS 类

javascript - asyncData 中的 Vuejs + SSR + router.push()

vue.js - 在 Vuejs 中,如何在默认路由器 View 之外呈现组件