vue element upload组件 file-list的动态绑定实现


Posted in Javascript onOctober 11, 2019

本文解决,upload组件 file-list的动态绑定list1,list2 ...,实现动态添加,相信很多电商后台管理系统都会遇到这个需求,例子如下

vue element upload组件 file-list的动态绑定实现

本例,我是使用的upload默认的上传地址(很多图片不能上传,你可以在本地截几张图片,进行测试),我可以上传多张活动图片,可以加相应的,名称,链接描述等,如果有多个活动,可以点击添加活动,在第二个活动又能添加相应的内容,保存完之后,可以实现回显,活动详情页可以看到添加的几个活动和相应的活动内容。

实现方法不为一,这是一种特别简单的。代码如下

<template>
 <div class="view">
  <div class="item" v-for="(item,index) in formList" :key="index">
   <div style="font-size: 14px; color: #606266;line-height: 40px;">相关图片资料</div>
   <el-upload
    action="https://jsonplaceholder.typicode.com/posts/"
    list-type="picture-card"
    :on-preview="handlePictureCardPreview"
    :on-remove="(file, fileList)=>{return handleRemove(file, fileList, index)}"
    :limit="5"
    :on-exceed="onExceed"
    :file-list="item.pics"
    :on-success="(response, file, fileList)=>{return onSuccess(response, file, fileList, index)}"
   >
    <i class="el-icon-plus"></i>
   </el-upload>
   <el-dialog :visible.sync="dialogVisible">
    <img width="100%" :src="dialogImageUrl" alt />
   </el-dialog>
   <el-form label-position="top" label-width="80px" :model="item">
    <el-row :gutter="20">
     <el-col :span="12">
      <el-form-item label="活动名称">
       <el-input v-model="item.name"></el-input>
      </el-form-item>
     </el-col>
     <el-col :span="12">
      <el-form-item label="活动链接">
       <el-input v-model="item.content"></el-input>
      </el-form-item>
     </el-col>
    </el-row>
   </el-form>
   <el-button type="danger" @click="delItem(index)" style="margin-bottom:20px">删除</el-button>
  </div>
  <el-button type="success" @click="addItem" style="width:1000px">添加活动</el-button>
  <el-button type="primary" @click="saveItem" style="margin-top:20px;margin-left:0;">保存活动</el-button>
 </div>
</template>
 
<script>
export default {
 name: "HelloWorld",
 data() {
  return {
   dialogImageUrl: "",
   dialogVisible: false,
   formList: [{ pics: [] }]
  };
 },
 methods: {
  // 上传图片
  onSuccess(response, file, fileList, idx) {
   // 这里是element的上传地址,对应的name,url,自己打印fileList对照
   this.formList[idx].pics.push({ name: file.name, url: file.url });
  },
  // 移除图片
  handleRemove(file, fileList, idx) {
   let Pics = this.formList[idx].pics;
   Pics.forEach((item, index) => {
    if (file.name == item.name) {
     Pics.splice(index, 1);
    }
   });
  },
  // 查看图片
  handlePictureCardPreview(file) {
   this.dialogImageUrl = file.url;
   this.dialogVisible = true;
  },
  onExceed(file, fileList) {
   this.$message({
    type: "warning",
    message: "最多上传5张"
   });
  },
  // 添加活动
  addItem() {
   this.formList.push({ pics: [] });
  },
  // 删除活动
  delItem(idx) {
   if (this.formList.length > 1) {
    this.formList.splice(idx, 1);
   } else this.formList = [{ pics: [] }];
  },
  // 保存活动
  saveItem() {
   this.$message({
    type: "success",
    message: "保存成功,可以刷新下试试回显效果"
   });
   console.log(this.formList);
   localStorage.setItem("formList", JSON.stringify(this.formList));
  }
 },
 created() {
  this.formList = JSON.parse(localStorage.getItem("formList"))|| [
   { pics: [] }
  ];;
 }
};
</script>
 
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.view {
 width: 1000px;
 margin: 0 auto;
}
.item {
 width: 100%;
}
</style>

主要实现,动态添加多个item,每个item都有对应的多张图文和介绍,可以删除,保存,下次进来可以回显继续编辑,详情展示页可以展示

github地址,可以clone下来,本地跑一下看看

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js关闭当前页面(窗口)的几种方式总结
Mar 05 Javascript
js保留两位小数使用toFixed实现
Jul 29 Javascript
javascript模拟订火车票和退票示例
Apr 24 Javascript
js上传图片及预览功能实例分析
Apr 24 Javascript
JQuery中Text方法用法实例分析
May 18 Javascript
JavaScript事件代理和委托详解
Apr 08 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
Mar 08 Javascript
VueJs使用Amaze ui调整列表和内容页面
Nov 30 Javascript
微信小程序实现的日期午别医生排班表功能示例
Jan 09 Javascript
浅谈目前可以使用ES10的5个新特性
Jun 25 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 Javascript
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 #Javascript
微信小程序 点击切换样式scroll-view实现代码实例
Oct 11 #Javascript
vue控制多行文字展开收起的实现示例
Oct 11 #Javascript
这15个Vue指令,让你的项目开发爽到爆
Oct 11 #Javascript
js脚本中执行java后台代码方法解析
Oct 11 #Javascript
基于js实现复制内容到操作系统粘贴板过程解析
Oct 11 #Javascript
ES6之Proxy的get方法详解
Oct 11 #Javascript
You might like
TMDPHP 模板引擎使用教程
2012/03/13 PHP
PHP进程同步代码实例
2015/02/12 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
查看Django和flask版本的方法
2018/05/14 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
2018/12/05 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
保安员岗位职责
2013/11/17 职场文书
采购主管岗位职责
2014/02/01 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
2014年节能工作总结
2014/12/18 职场文书
客房部经理岗位职责
2015/02/02 职场文书
小平您好观后感
2015/06/09 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android
virtualenv隔离Python环境的问题解析
2022/06/21 Python