虽然到目前为止PhotoSwipe一直很棒,但这些小问题我似乎无法解决这个问题
我按如下方式初始化PhotoSwipe
formPhoto.gallery = window.Code.PhotoSwipe.attach( images, options);
在图库中,用户可以选择是否通过
删除图像按下删除按钮后即可运行
formPhoto.gallery.cache.images.splice(e.target.currentIndex,1);
delete formPhoto.activeObj.value[e.target.originalImages[e.target.currentIndex].id];
if(formPhoto.gallery.cache.images.length == 0)
formPhoto.gallery.hide();
else
formPhoto.gallery.carousel.show( 0 );
现在这种方法很好,除了2例。
使用
重新启动images = [];
for(var x in formPhoto.activeObj.value)
images.push({url: formPhoto.activeObj.value[x].file, id:x});
formPhoto.gallery = window.Code.PhotoSwipe.attach( images, options);
如果你愿意,我可以试着记录下发生的事情。我不确定如何解决这个问题,我已经查看了https://github.com/codecomputerlove/PhotoSwipe/issues和Google,但没有任何帮助。
我真正想做的只是从图库中删除图像(仅在独占模式下查看)
答案 0 :(得分:0)
好的,我最后写了一个临时解决方案..它有点hacky,但我只是手动从转盘中删除DOM
jQuery(formPhoto.gallery.carousel.contentEl).find("[src*=\"" + formPhoto.activeObj.value[e.target.originalImages[e.target.currentIndex].id].file + "\"]").parent().remove();
//we look for the image that contains the same filename as the one we're trying to delete.
//so we just remove that.
formPhoto.gallery.cache.images.splice(e.target.currentIndex,1);
delete formPhoto.activeObj.value[e.target.originalImages[e.target.currentIndex].id];
e.target.originalImages.splice(e.target.currentIndex, 1);
formPhoto.activeObj.object.find("[type=amountadded]").html(formPhoto.activeObj.valueLength() + " photos");
if(formPhoto.gallery.cache.images.length == 0)
formPhoto.gallery.hide();
else {
//real hacky job. Atleast it looks like a real cool effect occured.
formPhoto.galleryInitiate(formPhoto.activeObj, e.target.originalImages);
}
还解决了重新出现的图像问题,原因是新生成的文件具有相同的文件名。为平均时间的文件名添加了日期组件。
答案 1 :(得分:0)
这是删除按钮的处理程序
function ps_delete_image(btn) {
var inst = PhotoSwipe.instances[0];
var curImg = $photoSwipe.getCurrentImage();
inst.cache.images.splice(inst.currentIndex, 1);
inst.originalImages.splice(inst.currentIndex, 1);
if(inst.cache.images.length == 0) inst.hide();
else {
if (inst.currentIndex == inst.cache.images.length) inst.carousel.show(inst.currentIndex - 1);
else inst.carousel.show(inst.currentIndex);
}
// remove delete button if 3 or less is left
if(inst.cache.images.length <= 3) {
$(btn).remove();
}
}
为了克服3张图像和更少图像的问题,我只需删除删除按钮。