首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue.js -如何动态切换图像的URL?

Vue.js -如何动态切换图像的URL?
EN

Stack Overflow用户
提问于 2019-07-22 19:52:41
回答 1查看 4.4K关注 0票数 0

我是在一个网站上的用户可以选择一个图像通过无线电选择。根据用户的选择,我想动态更新图像URL。我的方法是使用一个计算变量,它根据用户的选择从对象列表返回URL。

代码语言:javascript
复制
<template>
    <v-img
        :src="require(currBackgroundURL)"
        class="my-3"
        contain
        width="397"
        height="560"
    ></v-img>
</template>

<script>
    // data() ...
    currBackground: 0,
    backgrounds: [
      {
        name: "Flowers",
        url: "../assets/background/bg_1.png"
      },
       // ...
  computed: {
      currBackgroundURL: function() {
          return this.backgrounds[this.currBackground].url
      }
  }
</script>

不幸的是,我得到了一个错误,上面写着Critical dependency: the request of a dependency is an expression

浏览器控制台写着:[Vue warn]: Error in render: "Error: Cannot find module '../assets/background/bg_1.png'"

问题:,什么是动态切换图像URL的正确方法?

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-22 23:00:24

下面是一个有用的例子:

代码语言:javascript
复制
var app = new Vue({
  el: '#app',
  data: () => ({
    currBackground: 0,
    backgrounds: [
      {
        name: "black",
        url: "https://dummyimage.com/600x400/000/fff"
      },
      {
        name: "blue",
        url: "https://dummyimage.com/600x400/00f/fff"
      },
      {
        name: "red",
        url: "https://dummyimage.com/600x400/f00/fff"
      }
    ]
  }),
  computed: {
      currBackgroundURL: function() {
          return this.backgrounds[this.currBackground].url
      }
  },
  methods: {
    nextImage() {
      this.currBackground += 1
      if (this.currBackground > 2) {
        this.currBackground = 0
      }
    }
  }
})
代码语言:javascript
复制
<html>
<head>
  <link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.min.css" rel="stylesheet">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
</head>
<body>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.18/vue.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.js"></script>

  <div id="app">
      <v-btn @click="nextImage()">Change image</v-btn>
      <v-img
          :src="currBackgroundURL"
          class="my-3"
          contain
          width="397"
          height="560"
      ></v-img>
  </div>
</body>

我删除了require

src是一个链接/路径,所以不需要requirerequire将尝试获取路径并将其加载到模块中,而不是链接/路径。

希望这能帮上忙。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57152882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档