有没有一种方法可以在Vue中与图像链接?

时间:2019-11-17 06:00:44

标签: javascript json vue.js

使用Vue单击图像时,我无法链接到其他URL。

它应该能够通过单击图像进行链接,但这不起作用。

如果有人可以帮助我,我会非常感激。

我的代码如下所示。

HTML

<section class="bg-light page-section" id="portfolio">
    <div class="container">
      <div class="row">
        <div class="col-lg-12 text-center"><br>
          <h2 class="section-heading text-uppercase works-text">Works</h2>
          <h3 class="section-subheading text-muted">Selected work that has been created with the help of many.</h3>
        </div>
      </div>
      <div class="row">
       <div class="col-md-4 col-sm-6 portfolio-item" v-for="(obj, key) in portfolioJSON" :key="key"  >
          <a class="portfolio-link" data-toggle="modal" target = "_blank" v-bind:href="`${obj.url}`">
            <div class="portfolio-hover">
              <div class="portfolio-hover-content">
                <!-- <! <i class="fas fa-plus fa-3x"></i> -->
              </div>
            </div>
            <img :src="`${obj.img}`" class="img-fluid" >
          </a>
          <div class="portfolio-caption works-text">
            <h4 class="works-text">{{ obj.caption }}</h4>
            <p class="text-muted works-text">{{ obj.title }}</p>
          </div>
        </div>

      </div>
    </div>
  </section>
export default {
    data() {
      return{
        portfolioJSON: [
           {
                img: require('../assets/img/sukimatch/sukimatch.png'),
                caption: 'Sukimatch',
                title: 'WEBSITE, BANNER DESIGN',
                url: "https://sukimatch-f887f.firebaseapp.com/"
            },
            {
                img: require('../assets/img/portfolio/greencosjapan.png'),
                caption: 'Greencosjapan',
                title: 'WEBSITE',
                url: "https://greencosjapan.com"
            }
        ]
    }
    }, computed: {
    imageArray: function() {
        return this.portfolioJSON.map(obj => obj.img)
    },
    urlArray: function() {
        return this.portfolioJSON.map(obj => obj.url)
    }
},

}

3 个答案:

答案 0 :(得分:1)

您的代码将无法正常工作,您应该调用${obj.img},这是模板文字的新ES6语法

<div class="col-md-4 col-sm-4 sk-item" v-for="(obj, key) in portfolioJSON" :key="key">
          <img :src="`${obj.img}`" class="img-fluid" alt="" >
        </div>

您可以在此处了解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

这非常有用,您应该在代码中所有可以使用的地方使用它。

img: require('../assets/img/sukimatch/sukimatch.png'),
                caption: 'Sukimatch',
                title: 'WEBSITE, BANNER DESIGN',
                url: "https://sukimatch-f887f.firebaseapp.com/"

:title="`${obj.title}`"
:href="`${obj.url}`"
:img="`${obj.img}`"

希望这可以帮助您:)

更新:

    export default {
      data() {
            return {
               portfolioJSON: [
               {
                    img: require('../assets/img/sukimatch/sukimatch.png'),
                    caption: 'Sukimatch',
                    title: 'WEBSITE, BANNER DESIGN',
                    url: "https://sukimatch-f887f.firebaseapp.com/"
                },
                {
                    img: require('../assets/img/portfolio/greencosjapan.png'),
                    caption: 'Greencosjapan',
                    title: 'WEBSITE',
                    url: "https://greencosjapan.com"
                }
            ]
}, computed: {
        imageArray: function() {
            return this.portfolioJSON.map(obj => obj.img)
        }
    }

}

答案 1 :(得分:0)

您的图像上不需要href。其他一切看起来都可以。我只是在一个可以正常工作的Codepen中尝试了一个示例。发布带有更完整示例的代码笔。可能是CSS问题。

您的代码: <img :src="obj.img" class="img-fluid" href="obj.url">

应该是

<img :src="obj.img" class="img-fluid"

答案 2 :(得分:0)

此解决方案对我有用。当您的资产文件夹位于公用文件夹内时。

<div style="backgroundImage: url('~../../assets/images/image_1.jpg')">

否则,如果它在src内部使用别名“ @”

<div style="backgroundImage: url('~@/assets/images/image_1.jpg')">