element-ui 多图上传和删除 经验

<el-form-item label="照片"   required>
    <el-upload action="/api.php/up/shangchuan" name="fk" list-type="picture-card" :on-remove="handleRemove" :file-list="form.pic" :on-success="et_shangchuan"  :before-upload="beforeAvatarUpload" multiple :limit="4" :on-exceed="on_exceed">
        <i class="el-icon-plus"></i>
    </el-upload>
</el-form-item>

在设置了 :file-list="form.pic" 之后

正常的逻辑是  上传成功后 项数组  form.pic 追加数据

//图集上传图片成功
et_shangchuan(file)
{
  
    this.form.pic.push(file)
},

虽然结果没啥问题但是 效果上有点问题 他会多空出一块在回到原位置

我的解决方案是

不向绑定的数组里追加数据 借助一个临时的 数组

//图集上传图片成功
et_shangchuan(file)
{
    file.up=1  //这个地方代表是新上传的
    this.form.demo.push(file)
},

 这样的话的 就没有多空出一块的效果了  

2、删除对应的图片

如果 up=0  就在原数组 form.pic里面 找数据

如果up=1 就在临时的数组里找数据

//删除图片
handleRemove(file) {

    if(file.response)
    {
        if(file.response.up==0)
        {
            var url=file.response.url
            var index=me.form.pic.findIndex(item => item.url ==url)
            me.form.pic.splice(index, 1)
        }
        else
        {
            var url=file.response.url
            var index=me.form.pic.findIndex(item => item.url ==url)
            me.form.demo.splice(index, 1)
        }

    }
    else
    {
        if(file.up==0)
        {
            var url=file.url
            var index=me.form.pic.findIndex(item => item.url ==url)
            me.form.pic.splice(index, 1)
        }
        else
        {
            var url=file.url
            var index=me.form.pic.findIndex(item => item.url ==url)
            me.form.demo.splice(index, 1)
        }
    }

    console.log(file)

},

3、后端在修改和新增数据的时候

需要把 原始素组 pic 和 临时的temp 统一都追加进来   。

$piclist=$post['pic'];
$demolist=$post['demo'];

$pic=array();

foreach ($piclist as $pv)
{
    array_push($pic,$pv);
}
foreach ($demolist as $dv)
{
    array_push($pic,$dv);
}

4、后端在返回原数组数据的时候设置up=0

这样的话 修改数据的时候 就可以 识别出来 哪个新 原始的 哪个是新 上传的

foreach ($pic as $v)
{
   $list=array(
       'url'=>$v['url'],
       'up'=>0
   );
    array_push($rows,$list);
}
return $rows;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值