【发布时间】:2016-02-22 08:42:38
【问题描述】:
在使用 Google 电子表格作为“后端”时,我使用 jQuerys $.getJSON(...) 通过 Google 的 JSON 输出 (https://spreadsheets.google.com/feeds/list/MySpreadsheetID/1/public/values?alt=json) 获取电子表格的数据,处理数据(将值添加到数组中)并通过数组循环将数据/内容添加到前端。
现在假设 Google 电子表格有大约 200 行和大约 10 列(大量数据)填充了数据。我正在使用这些数据在前端创建信息卡(每行 = 一张卡,200 行 = 200 张卡……)。这对于«首次加载»时的浏览器来说显然是相当多的工作。
如何添加«Load More»-Routine,以在构建前端时降低浏览器负载/-work?
目标是加载完整的 JSON,但仅先将 X 行(= X 卡)的数据添加到前端,并且仅当用户单击 «Load More» 元素时才加载接下来的 X 行,然后在第二次单击时加载接下来的 X 行,依此类推,直到构建所有行/卡片。
我的简化代码(获取所有行并在第一次加载时创建所有卡片):
var rowCount,
row1 = [],
row2 = [],
row3 = [],
$cardsContainer = $('.js-cardsContainer');
function processDataGoogle(data) {
rowCount = Object.keys(data.feed.entry).length;
for(var i in data.feed.entry) {
row1.push("" + data.feed.entry[i].gsx$row1.$t);
row2.push("" + data.feed.entry[i].gsx$row2.$t);
row3.push("" + data.feed.entry[i].gsx$row3.$t);
}
}
function addCards() {
for(var index = 0; index < rowCount; index++) {
$cardsContainer.append($('<article class="card"><h1>'+row1[index]+'</h1><p>'+row2[index]+'</p><a href="#">'+row3[index]+'</a></article>'));
}
}
$(document).ready(function() {
$.getJSON('https://spreadsheets.google.com/feeds/list/MySpreadsheetID/1/public/values?alt=json', function(data) {
processDataGoogle(data);
addCards();
});
});
【问题讨论】:
-
我们可以更改
addCards(),并在那里添加加载更多逻辑。 -
类似这样的东西:plnkr.co/edit/94wmhzRQd1qdzMpRr9xr?p=preview。 (注意:我必须使用虚拟数据而不是 Google 电子表格数据)
标签: javascript jquery json performance