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 相关文章推荐
学习并汇集javascript匿名函数
Nov 25 Javascript
原生javascript获取元素样式属性值的方法
Dec 25 Javascript
JS留言功能的简单实现案例(推荐)
Jun 23 Javascript
JS实现输入框提示文字点击时消失效果
Jul 19 Javascript
轻松搞定js表单验证
Oct 13 Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
Sep 05 Javascript
ztree加载完成后显示勾选节点的实现代码
Oct 22 Javascript
详解JavaScript中关于this指向的4种情况
Apr 18 Javascript
VueCli3.0中集成MockApi的方法示例
Jul 05 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 Javascript
微信小程序实现拍照和相册选取图片
May 09 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
php5.2时间相差8小时
2007/01/15 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
javaScript如何生成xmlhttp
2013/12/16 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
js中url对象化管理分析
2017/12/29 Javascript
浅谈React高阶组件
2018/03/28 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
详解rem 适配布局
2018/10/31 HTML / CSS
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
Ajax和javascript的区别
2013/07/20 面试题
我的求职计划书
2014/01/10 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis