在vue中怎么才能根据后台返回不同的文字渲染不同的图片呢?
根据不同的文字状态,页面上给出不同的图片
我是这样写的
<li class="clearfix" v-for="(item,key) in myData">
<router-link :to="{path:'/home_details?id='+item.id+'&logDate='+item.status}">
<div>{{item.name}}</div>
<div class="list_right">
<img :src="statusimage"/>
<span v-bind:style="{'color':color(item)}">{{item.status}}</span>
</div>
</router-link>
</li>
color(col){
// if(col.status=="已完成") return "#FFD700"
// if(col.status=="执行中") return "green"
// if(col.status=="待执行") return "gray"
// return "black"
if(col.status=="已完成"){
return this.statusimage="../assets/img6.png"
}
if(col.status=="执行中"){
return this.statusimage="../assets/image7.png"
}
if(col.status=="待执行"){
return this.statusimage="../assets/image5.png"
}
},
不同的文字颜色不同是可以实现的,为什么不同的图片不行呢? 页面报错
这是为什么呢 怎么写呢?
根据不同的文字渲染不同的图片
你要记住assets文件夹在你代码跑起来的时候是不存在的,所以不要在vue的逻辑的路径里出现
assets
,有两种方式:/static/xxx
import img1 from '../assets/xx'
导入图片,然后路径里写this.xxx = img1
或者:src="img1"
除了文件路径错误还有其他错误。
statusimage
:多个v-for的dom公用了一个statusimage
,会导致渲染结果相同。可以将this.statusimage = xxx
改为col.statusimage = xxx
,或者再起一个数组。:src="getImgPath(col)"
,方法内直接返回路径地址,这么写的话就不需要按1去改了,然后把style里的删了。