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 相关文章推荐
JQuery 初体验(建议学习jquery)
Apr 25 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
Mar 26 Javascript
详解JavaScript中localStorage使用要点
Jan 13 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
Sep 22 Javascript
JQuery元素快速查找与操作
Apr 22 jQuery
小程序ios音频播放没声音问题的解决
Jul 11 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
Oct 08 Javascript
JS函数基本定义与用法示例
Jan 15 Javascript
基于javascript实现碰撞检测
Mar 12 Javascript
js实现简单五子棋游戏
May 28 Javascript
vue将文件/图片批量打包下载zip的教程
Oct 21 Javascript
解决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
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
python实现log日志的示例代码
2018/04/28 Python
实例详解Python装饰器与闭包
2019/07/29 Python
利用python计算时间差(返回天数)
2019/09/07 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
铭立家具面试题
2012/12/06 面试题
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
网站编辑求职信
2013/10/17 职场文书
财务会计专业毕业生自荐信
2013/10/19 职场文书
致200米运动员广播稿
2014/02/06 职场文书
表演方阵解说词
2014/02/08 职场文书
政府个人对照检查材料
2014/08/28 职场文书
创先争优活动心得体会
2014/09/04 职场文书
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技