嗨,我实现了一个数据库的幻灯片放映,类似于facebook模式,但只有一个图像/视频和描述。
我决定使用缓存结果以获得更好的性能,现在,我将所有结果缓存在一个数组中,只需++ / - 当用户按下箭头按钮时的索引。我的代码看起来像:
var filesPrev, filesNext, initalFile = new Array();
var currentSlide; // represents the index/key of the current showed file
$(".imgLink").click(function() {
idFile = $(this).attr("idFile");
initialFile = load(idFile); // pseudo code, it loads the first file
loadImagesBefore(idFile).then(function(answer) { // get 10 images where id < idFile
filesPrev = answer; // cache the results in an array
loadImagesAfter(idFile).then(function(answer) { // get 10 images where id > idFile
filesNext = answer.reverse(); // reverse just for ordering purposes
//Now add both arrays (next/prev) and the firstFile(array) to slides array
slides = filesNext;
slides.push(initialFile);
currentSlide = slides.length -1; // set current index/key to file(clicked)
for (var i = 0; i < filesPrev.length; i++) {
slides.push(filesPrev[i]); // push filesPrev to slides array;
};
openSlide(); // format view of first image
});
});
}
幻灯片控制器的伪代码:
leftkey.click(function() {
currentSlide--;
formatSlide(slide[currentSlide]);
if (currentSlide == 1) {
loadMoreFiles('next'); //caching again
}
});
rightkey.click(function() {
currentSlide++;
formatSlide(slide[currentSlide]);
if (currentSlide == slide.length) {
loadMoreFiles('prev'); //caching again
}
});
问题在于当没有更多的文件向左或向右显示时,我希望幻灯片获得“其他”结果(比如facebook,当你点击第一张照片时,按左键,它会让你到最后照片)。
我目前正在检查新加载的结果是否与最后的filesPrev结果的idFiles不匹配。但我想如果我不能以另一种方式做到这一点。也许有2个阵列,一个用于prev,另一个用于下一个文件,你认为哪种方式更好?提前致谢