upload上传删除队列的问题

提问 已结
5 2060
CHC云
CHC云 VIP3 2017-10-13
悬赏:20飞吻
版本:layui 2.1.2 浏览器:IE11
根据贤心的upload的【高级应用:制作一个多文件列表】这个示例,
复制了跟这个示例差不多的模版,但是有个小问题就是,在done上传回调内正常用msg显示'上传成功',但无法进行队列删除,就是再次点击还会把所有的文件上传,包括已经上传成功的,这说明 这个上传成功的文件 并没有在队列里删除,
代码如下
,choose: function(obj){
var files = obj.pushFile(); //将每次选择的文件追加到文件队列
obj.preview(function(index, file, result){
var tr = $(['<tr id="upload-'+ index +'">'
,'<td>'+ file.name +'</td>'
,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>'
,'<td>等待上传</td>'
,'<td>'
,'<button class="layui-btn layui-btn-mini demo-reload layui-hide">重传</button>'
,'<button class="layui-btn layui-btn-mini layui-btn-danger demo-delete">删除</button>'
,'</td>'
,'</tr>'].join(''));
//单个重传
tr.find('.demo-reload').on('click', function(){
obj.upload(index, file);
});
//删除
tr.find('.demo-delete').on('click', function(){
delete files[index]; //删除对应的文件
tr.remove();
});
demoListView.append(tr);
});
}
,done: function(res, index, upload){
if(res.code == 0){ //上传成功
var tr = demoListView.find('tr#upload-'+ index)
,tds = tr.children();
tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
tds.eq(3).html(''); //清空操作
delete files[index]; //删除文件队列已经上传成功的文件

//!!!!问题在这里,上行代码 并没有在队列删除,除了这个操作,其他都没问题,在删除按钮demo-delete内 delete files[index];这个操作是正常的,但是在上传成功后的这里无效,也就是说 上传成功后的列表 如果再次点击上传 那么上传成功的文件还会被上传一次,求是什么问题!!!
return;
}
this.error(index, upload);
}
回帖
  • 复制粘贴我自己的回答[嘻嘻]

    好巧 我也碰到这问题
    我是这么改的
    ,choose: function(obj){
    var files = obj.pushFile(); //将每次选择的文件追加到文件队列
    把这的files前面的 var 去掉 变成全局变量
    1 回复
  • CHC云
    2017-10-13
    @缺钙的骷髅战士 66666666666的我大神啊,我特么撸了一下午加上昨天夜晚一晚上 都没研究明白!哈哈哈哈哈,实在感谢!!!
    0 回复
  • 不再等妳
    2017-10-16
    出来文当里有的还有其他方法上传吗 不用class 和Id怎么上传
    0 回复
  • @缺钙的骷髅战士 我也是这么干的,我想在选择图片后可以单独删除某个图片(选择错误什么的),files变为全局变量,在choose方法中把index传递到删除方法,但是delete files[index]的时候说找不到
    0 回复
  • 你tr.find('.demo-delete').on('click', function(){})放到函数体类不会执行多次吗?我采用这种方式来删除当前图片,发现第一次点击事件执行了一次,第二次此行二次,依次类推。你是则么判断图片删除完了的呢?
    0 回复
本帖已设置禁止回复