在 Vue.js 中生成动态 img 路径

Posted

技术标签:

【中文标题】在 Vue.js 中生成动态 img 路径【英文标题】:Generate dynamic img paths in Vue.js 【发布时间】:2018-03-11 22:30:00 【问题描述】:

Relevant codepen

我正在尝试生成动态图像路径,但我遗漏了一些东西。由于某种原因,该方法未在 img 标记中的 src 属性上执行。

这是 html

<div id="app">

  <component v-bind:fruits="fruits" is="fruits-list"></component>

</div>

<template id="fruits-template">
  <div>
    <ul>
      <li v-for="fruit in fruits">
         fruit 
        <img src="imgName(fruit)" />
      </li>
    </ul>
  </div>
</template>

这里是相关的JS:

Vue.component('fruits-list', 
  template:'#fruits-template',
  props: ['fruits'],
  methods: 
    imgName: function(fruit)
      var imgPath = 'assets/images/' + fruit + '.jpg';
      return imgPath;
    
  
)

new Vue(
  el: '#app',
  data() 
    return 
      fruits: ['apple','pear','strawberry', 'peach']
    
  
)

我也尝试将src 绑定到img 标记,例如:

<img :src="getImageUrl(fruit)" />

但这根本不会导致任何渲染。在这样的实例中使用方法或计算属性会更好吗?

【问题讨论】:

你在哪里定义了getImageUrl方法? 使用方法应该可以很好地工作。尝试参考这个答案:***.com/questions/40491506/… 【参考方案1】:

在 html 中试试这个:

<img v-bind:src=imgName(fruit) />

当我在你的笔中更改它时,我看到对该 URL 的请求失败,其他水果的请求也类似:

Request URL:https://codepen.io/boomerang/iFrameKey-9b0f86ca-8c55-3b83-2d9c-3367ada2ac69/assets/images/apple.jpg

是否有您希望它们出现的那些水果的图像?我将imgName 方法更改为以下内容,苹果的图像加载到笔内:

imgName: function(fruit)
  if (fruit === 'apple') 
    return 'https://bestapples.com/wp-content/uploads/2015/10/apple-varieties.jpg'
   else 
    var imgPath = 'assets/images/' + fruit + '.jpg';
    return imgPath;        
  


【讨论】:

嘿,是的,这些图像并不是要在笔中实际呈现。我只需要弄清楚如何生成图像路径。这行得通,所以谢谢:)

以上是关于在 Vue.js 中生成动态 img 路径的主要内容,如果未能解决你的问题,请参考以下文章

Excel 在动态目录路径中生成新工作簿

Vue.js 动态图像路径未加载

在 vue.js 中动态添加/删除图像

如何在列表中生成动态 url?

如何在 Webpack 中生成动态导入块名称

是否可以在 Java 中生成动态 InputStream?