没有合适的资源?快使用搜索试试~ 我知道了~
首页解决vue的 v-for 循环中图片加载路径问题
资源详情
资源评论
资源推荐

解决解决vue的的 v-for 循环中图片加载路径问题循环中图片加载路径问题
今天小编就为大家分享一篇解决vue的 v-for 循环中图片加载路径问题,具有很好的参考价值,希望对大家有所
帮助。一起跟随小编过来看看吧
先看一下产品需求,如下图所示,先看一下产品需求,如下图所示,
产品要求图片和它的名称一一对应,本来是非常简单的需求,后台直接返回图片路径和名称,前台直接读取就可以了,但是我
们没有存储图片的服务器,再加上是一个实验性的需求,图片需要存放到前台。当时我想,vue 中的img 的src 可以动态绑定
到一个变量上, 很简单吗,就没有考虑太多,直接开始做了。
首先和后台商量一下数据结构,因为图片要和名称一一对应,所以后台要返回中英文的名称的映射,我把前台的图片名称直接
设置给后台给的英文名称,从而读取图片,图片和中文名称就一一对应了。数据结构如下:映射关系用对象表示,多个图片,
所以放到一个数组中
[
{
CnName:'荷花',
EnName: 'lotus'
},
{
CnName:'康乃馨',
EnName: 'carnations'
},
{
CnName:'牡丹',
EnName: 'peony'
}
]
现在前台用vue-cli, 后台用express 来模拟一下当时的开发场景,也可以还原一下错误和业务的迭代过程。新建一个文件夹,
就叫vue-img吧,然后再在该文件夹中新建两个文件夹,client, server, client 表示客户端代码,server 表示服务端代码。 在
client 文件夹中,打开命令窗口,执行 vue init webpack-simple . 命令,后面的点表示当前文件夹,为了简单,这里使用了
simple 模版. server 文件夹,打开命令窗口,先执行npm init 初始化为node 项目,然后npm install express cors --save, 安装
依赖,cors 是解决跨域的。
先来写前端代码,把app.vue 中的template和script中的内容清空,保留它的css 样式内容,我们就不用写样式了。前端页面,
有两个部分,一个是button, 点击按钮来发送请求,一个是图片展示区域,它用的就是v-for 循环, template 内容如下
<div id="app">
<button @click='getFlower'>点击加载请求</button>
<!-- 由于当时想当然地以为,src 就是绑定一个变量,所以就设置了一个默认变量,这是出错的过程 -->
<ul>
<li v-for ="item in flowers" :key="item">
<img :src="defaultImg" alt="flowers">
<p>{{item}}</p>
</li>
</ul>
</div>
</template>
由于template中用到了方法 getFlower, 变量defaultImg 和 flowers, 所以要在script中进行声明。defaultImg 是一个图片,所以
还要引入进来, 在src 目录中新建一个img文件夹,放几张图片。flowers是一个数组,我先预写了一个['荷花', '康乃
馨'],getFlower,因为没有后台,所以先没有写, 注意如果数据量大的,交互复杂,是要写mock 数据的,这里比较简单就没
有写。这也是出错的原因。代码如下
import defaultImg from './img/lotus.jpg'; // import 引入图片
export default {
data() {
return {
flowers: ['荷花', '康乃馨'],
defaultImg: defaultImg
};
},
methods: {
getFlower() {}
}
};
整个页面显示如下,我以为没有问题了。整个页面显示如下,我以为没有问题了。
现在再来写后台代码, 用express 写一个后台接口,还是非常简单的。在server 文件夹中,建一个文件server.js 来写后台代码
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0