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 面向对象全新理练之原型继承
Dec 03 Javascript
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
Nov 16 Javascript
javascript正则匹配汉字、数字、字母、下划线
Apr 10 Javascript
函数式 JavaScript(一)简介
Jul 07 Javascript
Linux下使用jq友好的打印JSON技巧分享
Nov 18 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
Apr 15 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
May 02 Javascript
Bootstrap Table使用整理(五)之分页组合查询
Jun 09 Javascript
vue resource post请求时遇到的坑
Oct 19 Javascript
详解django模板与vue.js冲突问题
Jul 07 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
Aug 08 Javascript
vue实现简易音乐播放器
Aug 14 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
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
php 修改密码实现代码
2017/05/24 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
vue实现鼠标经过动画
2019/10/16 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
python人人网登录应用实例
2014/09/26 Python
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python中的ConfigParser模块使用详解
2015/05/04 Python
Python解析树及树的遍历
2016/02/03 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
电脑饰品店的创业计划书
2014/01/21 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python