在我的Javascript分页代码中遇到一些逻辑问题

时间:2010-12-03 12:31:02

标签: javascript pagination

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等...

当它们来回导航时,此偏移应相应地改变。问题是,事实并非如此。我不明白为什么......

有什么想法吗?

1 个答案:

答案 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调用的返回值。