javascript - VueJs - 加载动态图像

标签 javascript vue.js

这是我的代码,它尽可能地发挥作用:

        <li class="icon-list">
          <img src="../assets/apple.svg" alt="apple" class="icons">
        </li>        
        <li class="icon-list">
          <img src="../assets/google.svg" alt="google" class="icons">
        </li>

我想用动态循环来做上面的事情。所以我使用了 v-for 并使用 :src:alt

    <li v-for="icon in icons" class="icon-list">
      <img class="icons" :src="'../assets/' + icon.src" :alt="icon.alt">
    </li>


export default {
  name: "Home",

  data() {
    return {
      icons: [
        {          
          src: "google.svg",
          alt: "google"
        },
        {          
          src: "apple.svg",
          alt: "apple"
        }
      ]
    };
  }
};

但是它不加载任何图像。有什么建议吗?

最佳答案

据我所知,您想要实现的目标不可能像您想象的那样。 Vue 模板只能在运行时访问关联组件模型的属性。 但是,webpack 将首先在编译时捆绑所有资源,包括图像。

绑定(bind) :src="'../assets/' + icon.src" 时,应用程序将尝试相对于浏览器的 url 上下文查找它,这取决于您放置的位置您的文件和您使用的服务器可以在任何地方。

您可以做的是使用 webpack 导入文件,这将为您提供图像的 Base64 表示形式并将其绑定(bind)到源,如下所示:

从“@/assets/logo.png”导入 Logo

export default {
  name: "App",
  data() {
    return {
      sources: [Logo]
    }
  }
};

然后像这样绑定(bind)它:

<img v-for="(source, index) in sources" :key="index" width="25%" :src="source">

我做了an example ,以防有帮助。警告:对于大文件来说,这可能不是一个很好的解决方案。

关于javascript - VueJs - 加载动态图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54387601/

相关文章:

javascript - 在插入数据库之前删除数组的重复值

javascript - 使用 var 和 let 同名变量?

javascript - 如何添加一个事件监听器,在将某种类型的元素添加到 DOM 时触发?

javascript - JavaScript 中的.text 冲突

javascript - 谷歌图片/视频搜索

vue.js - 在 Vue 中禁用键绑定(bind)复制/粘贴

javascript - vue-apollo 3.0.0 测试版配置

vue.js - 使用 $emit 调用函数

vue.js - 当元素没有 id 时,v-for 使用什么键?

vue.js - 如何以编程方式添加基于变量的事件?