Backbone.js Paginatorプラグインを使用しています。ページネーションに関与するモデルに対して独自の Collection を定義することで、無限スクロールのページネーションを適切に行います。ユーザーがログインしている場合、PHP バックエンドは追加の属性を含む Backbone オブジェクトを返し、is_liked
そのアイテムに異なる CSS スタイルを持たせます。
問題: Paginator プラグイン (独自の Collection を持つBackbone.Paginator.requestPager
) がバックエンドで GETfetch
リクエストを実行すると、バックエンドはユーザーがログインしているかどうかを判断できません! ただし、通常の を使用するBackbone.Collection
と、バックエンドはユーザーがログインしているかどうかを判断できます! それもで動作し$.post()
ます。これは、問題がプラグインにあると私に思わせますBackbone.Paginator.requestPager
Chrome の開発者ツールのネットワーク セクションを使用して、結果を確認しています。認証チェックが機能する場合api/test
、ユーザーに関するデータが返されることがわかります。ログイン状態が判別できない場合は null を返す
更新:GET
コレクションによって送信された要求には、によって送信された要求で見つかったヘッダーBackbone.Paginator.requestPager
の情報が含まれていません。これが問題でしょうか?ヘッダーから Cookie データを取り除かないようにするにはどうすればよいですか?Cookie
GET
Backbone.Collection
Backbone.Paginator.requestPager
ここで何が起きてるの?そして、どうすればこれを解決できますか(自分のページネーションコードを書き直すことなく)?
PHP バックエンド (Laravel Framework) を使用した認証テスト
Route::any('api/test', function() {
// This will return some data of the user if logged in
return json_encode(Auth::user());
});
典型的なバックボーン コレクション [作品]
SimilarUserCollection = Backbone.Collection.extend({
model: User,
url: 'api/test'
});
ページネーターのコレクション [動作しません]
PhotoCollection = Backbone.Paginator.requestPager.extend({
model: Photo,
paginator_core: {
type: 'GET',
dataType: 'json',
url: 'api/test'
},
paginator_ui: {
firstPage: 1,
currentPage: 1,
perPage: 7,
totalPages: 10
},
server_api: {
'page': function() { return this.currentPage; }
},
parse: function (response) {
return response;
}
});