Vue 绑定 url 无法与图像 src 一起正常工作

Posted

技术标签:

【中文标题】Vue 绑定 url 无法与图像 src 一起正常工作【英文标题】:Vue bind url not functioning properly with image src 【发布时间】:2020-08-02 03:54:41 【问题描述】:
<template>
  <div id="app">
    <b-container >
      <b-row>
        <div class="product">
          <img src='./assets/SocksG.jpg' >
        </div>
        <div class="cart">
          <button @click="addToCart">Add To Cart</button>
          <br>
          <p>Cart(cart)</p>
        </div>
        <div v-for="variant in variants" 
          :key="variant.variantId"
          class="color-box"
          :style="backgroundColor:variant.variantColor"
          @mouseover ="updateProduct(variant.variantImage)"
          >
        </div>
      </b-row>
    </b-container>
  </div>
</template>
export default 
  name: 'App',
  data() 
    return 
      cart: 0,
      variants: [
        variantId: 2234,
        variantColor: 'green',
        variantImage: './assets/SocksG.jpg'
      , 
        variantId: 2235,
        variantColor: 'blue',
        variantImage: './assets/SocksB.jpg'
      ]
    
  ,
  methods: 
    addToCart() 
      this.cart += 1
    ,
    updateProduct(variantImage) 
      this.image = variantImage
    
  

起初我将:src 应用到socksG 图像,在脚本中我不得不使用img:require("./assets/SocksG.jpg",它成功了。

现在有了应该激活 updateProduct() 函数的 @mouseover 事件处理程序,我感觉我在使用应该获取 variantImage(s) 的 Vue url 处理程序做错了,因为当我使用 Vue devtools 图像 url 是 img/SocksG.jpg 而不是 ./assets/SocksG.jpg。我做错了什么?

【问题讨论】:

【参考方案1】:

image添加数据属性:

return 
   image: ...,  // Set some initial image filename here
   cart: 0,
   ...

像这样使用require

<img :src="require('@/assets/' + this.image)" >

并从 url 中删除路径:

variantImage: 'SocksG.jpg'
...
variantImage: 'SocksB.jpg'

现在图像src 已绑定到this.image,您将通过鼠标悬停对其进行更改。

【讨论】:

mouseover 事件激活 updateProduct 函数,当鼠标移过两个不同的颜色框时,该函数负责切换图像 鼠标悬停事件设置this.image,这是一个1)当前未声明和2)未在模板中使用的变量。答案告诉你如何解决这个问题。 谢谢@Dan 我真是个白痴,我几乎编辑了整篇文章,因为我认为你的回答不正确,然后我试了一下,它奏效了。但是为什么它不能按预期工作呢? &lt;img :src="imageSrc"&gt; 在 vue 文档网站上 [vuejs.org/v2/api/#v-bind] 不客气。我认为这种情况经常发生,抓住它的方法。当您在 Vue CLI 中使用项目图像时,Webpack 会在实时版本中重命名它们。如果您使用模板中的字符串,CLI 会在使用 img src 时隐形修复此问题,但是当您绑定时,它需要 require 才能获得正确的名称。

以上是关于Vue 绑定 url 无法与图像 src 一起正常工作的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Vue 中加载图像

React maskImage内联无法正常工作-相同的图像与backgroundImage一起工作

vue-cli 动态绑定图片失败

Vue 如何正确绑定 src 与 API 的输出

WPF 绑定无法与 int 类型的属性一起正常工作

带有 webpack require() 的 Vue.js 动态图像 src 不起作用