アプリケーションのフロントエンドに backbone.js を使用しています。ナビゲーション ルールの 1 つは、認証フローに非常に似ています。アプリケーションは、特定の情報が利用可能な場合にのみ、ユーザーが要求したビューをレンダリングする必要があります。それ以外の場合は、別のビューをレンダリングする必要があります。情報が利用可能かどうかは、サーバーに問い合わせることで判断できます。私がこれまでに試したこと:
//Router table definition, etc...
var initialize = function(){
var appRouter = new AppRouter;
appRouter.on('route:somePage', withInfo(function(){
//render view for 'somePage'
}));
...
機能は次のwithInfo
とおりです。
function withInfo(f) {
$.ajax({
type: 'GET',
dataType: 'json',
url: '/path/to/info',
success: function (data, status, request) {
var info = $.parseJSON(request.responseText);
if (info){
f.call();
} else {
var defaultView = new DefaultView();
defaultView.render();
}
}
});
}
基本的に、私がやろうとしているのは、デフォルトの動作で高階関数を定義することです。f
デフォルトの動作が適用されない場合は、他の関数 (上記のコードで名前が付けられている) を呼び出す必要があります。しかし、これは期待どおりには機能しません。パラメータとして実際に渡される関数は、コードの最初のスニペットで宣言されている関数とは限りません。
これを行う別の方法はありますか?