为了账号安全,请及时绑定邮箱和手机立即绑定

axios请求后的VUE JS动态背景图片

axios请求后的VUE JS动态背景图片

慕码人2483693 2022-10-13 16:07:53
我正在尝试显示一个背景图像,它的路径需要通过 API 加载。计划是:从链接的主网格中,单击一个并根据单击的那个显示背景图像。到目前为止,我正在使用 axios 来查询发送我需要的数据的 API。我的组件上有以下脚本部分。<script>import axios from 'axios'const lhost = require("@/config/global").host;let championData;export default {  name: 'IndividualChampion',  props: {      },  data: () => ({    champions: [],    verPersonagem: mdiMovieOpen,      }),  computed: {         },  created: async function() {      try {        let champion = this.$route.fullPath.split('/')[2];        let response = await axios.get(lhost + "/champion/" + champion + '/full');        championData = response.data        console.log(championData)        let background = '@/assets' + championData['skins']['0']['splash'].replace('.png','.jpg')    }     catch (e) {      return e;     }  },  methods: {   }  }</script>这是我的 HTML<template>    <div :style="{ backgroundImage: `url(${require(background)})` }">    </div></template>我已经搜索过,但似乎找不到加载背景图像并在加载时显示的解决方案。有人可以帮忙吗?
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

从您对 的使用来看'@/assets',您似乎正在使用带有解析别名的 webpack。该表达式require(background)不足以让 webpack 确定它需要添加到你的包中的文件。


您可以通过指定要从中加载文件的目录来帮助 Webpack。你所要做的就是从后台变量中取出'@/assets/'并直接在require调用中使用它,这样Webpack就可以看到它。


<template>

    <div v-if="background" :style="{ backgroundImage: `url(${require('@/assets/' + background)})` }">


    </div>

</template>

<script>

import axios from 'axios'

const lhost = require("@/config/global").host;


let championData;


export default {

  name: 'IndividualChampion',

  props: {

    

  },

  data: () => ({

    champions: [],

    verPersonagem: mdiMovieOpen,

    background: ''

  }),

  computed: {

       

  },

  created: async function() {

      try {

        let champion = this.$route.fullPath.split('/')[2];

        let response = await axios.get(lhost + "/champion/" + champion + '/full');

        championData = response.data

        console.log(championData)

        this.background = championData['skins']['0']['loading'].replace('.png','.jpg')


    } 

    catch (e) {

      return e; 

    }

  },

  methods: { 


  }

  

}

</script>

不过,它将捆绑目录中的所有可能文件。


您可以在此处阅读更多相关信息:https ://webpack.js.org/api/module-methods/#dynamic-expressions-in-import


查看完整回答
反对 回复 2022-10-13
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号