嗨,我对vuejs很新。我尝试导入图片,然后在方法中调用此图片。
import image from '@/assets/svg/xxx.svg'
然后在数据中
data () {
return {
image: image
}
},
并尝试使用它
li.style.backgroundImage = "url('this.image')";
但图像未显示,图像链接显示如下
http://127.0.0.1:8080/order/detail/29/this.image
我真的不确定我哪里出错...请帮忙...
答案 0 :(得分:4)
使用style属性的计算属性执行此操作的另一种方法:
computed : {
liStyle(){
return "background-image : url('" + require('@/assets/svg/xxx.svg') + "')";
}
}
模板:
<li :style="liStyle"></li>
答案 1 :(得分:3)
我认为更好(和可扩展)的解决方案是拥有一个设置所需样式的类,并将其添加到元素中,如果它必须是dinamically,只需在某些条件下添加:class
注意:我使用了外部图片路径,但它与您的本地路径相同。并使用require()
导入图像和html
new Vue({
el: '#example'
})
.li-with-bg-image {
background-image: url('http://via.placeholder.com/350x150')
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div id="example">
<ul>
<li :class="{'li-with-bg-image': true}"></li>
<li></li>
<li class="li-with-bg-image"></li>
</ul>
</div>
其他选项
使用内联样式(使用v-bind:style)
new Vue({
el: '#example'
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div id="example">
<ul>
<li :style="`background-image: url('http://via.placeholder.com/350x150')`"></li>
</ul>
</div>
使用数据部分或绑定到样式的计算属性
new Vue({
el: '#example',
data: {
myStyles: `background-image: url('http://via.placeholder.com/350x150')`
},
computed: {
anotherStyles () {
return `background-image: url('http://via.placeholder.com/300x150')`
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div id="example">
<ul>
<li :style="myStyles"></li>
<li></li>
<li :style="anotherStyles"></li>
</ul>
</div>
资源:
答案 2 :(得分:1)
我很确定你不能通过import语句导入图像,只能模块(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import)。
我建议您阅读Vue-Webpack-template并查看static assets section。
简而言之,您可以使用Webpack(或Gulp)将资产移至固定位置,然后使用链接。