2010-12-03 7 views
1
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データをプルダウンします。Javascriptのページ番号コードでロジックに問題がある

このオフセットは、現在の「ページ」に基づいて変更されます。最初のページにはオフセットが0になります。 2番目のページは10になります。3番目のページ20など...

これらが前後にナビゲートするので、このオフセットはそれに応じて変更する必要があります。問題はそうではないということです。私は理由を見ることができません...

アイデア?

+0

あなたは '新しいBrowse()'を使用していて、インスタンスの 'loadMore'メソッドをフックしていますか? – sje397

+0

ええ、それはすべて正しく呼ばれています。 – dave

答えて

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呼び出しからの戻り値を無視するロジックを追加することができます。

関連する問題