function Browse()
{
this.offset = 10;
}
/*
* @direction is either 'next' or 'prev'
*/
Browse.prototype.loadMore = function(direction)
{
var _this = this;
$.getJSON('/path/to/api?offset=' + this.offset, function(json)
{
_this.offset = (direction == 'next') ? _this.offset + 10 : _this.offset - 10;
if (_this.offset > 10)
previousButton.show();
else
previousButton.hide();
});
}
这是基本代码。用户单击触发loadMore()
的链接。此函数从offset
开始下拉JSON数据。
此偏移量将根据其当前“页面”而改变。第一页的偏移量为0。第二页将是10.第三页20等...
当它们来回导航时,此偏移应相应地改变。问题是,事实并非如此。我不明白为什么......
有什么想法吗?
答案 0 :(得分:1)
这是因为ajax调用需要时间来执行。
尝试:
//...
var _this = this;
$.getJSON('/path/to/api?offset=' + this.offset, function(json) {
//...
});
_this.offset = (direction == 'next') ? _this.offset + 10 : _this.offset - 10;
//...
这将在ajax调用中使用正确的值,并在ajax调用返回之前更改为下一个调用准备好的偏移量。如果偏移量已在平均时间内调整,您可能希望添加逻辑以忽略ajax调用的返回值。