2012-04-26 6 views
0

バックボーンルータを使用していくつかの作業サンプルを行ったことがありますが、アドレスバーで直接使用されているルートを保護する方法はありますか?また、ユーザーがブラウザの戻るボタンを押すと、ルートがクリアされず、問題が発生します。これに最適なソリューションは何ですか?ルータのURLがユーザによってアドレスバーに直接使用されないようにするにはどうすればよいですか?

+0

アドレスバーで直接あなたはどういう意味ですか?バックボタンの問題は 'Backbone.history'オブジェクトの使用によって解決され、ルータのインスタンス上で' navigate'を呼び出します。 – tkone

+0

あなたの質問はあまりにも曖昧です。表示されている動作と動作が期待される動作について詳しく説明してください。また、何をしているのかを示すコードもいくつか掲載してください。 –

答えて

0

私は、あなたが何を言っているかを見ていると思います。ユーザーがある特定の(自宅の)ページからあなたのサイトに入るようにしたいと思っています。あれは正しいですか?

これは、たとえば、モバイルに最適化されたウェブアプリケーションを作成しているときなどに便利です。ユーザーは常にスプラッシュ画面から入力する必要があります。私は何だろうが、私のルータに「legitEntrance」プロパティを設定し、そのように、すべてのルート上でそれをチェックされています

APP.Router = Backbone.Router.extend({ 
legitEntrance: false, 

// Just a helper function 
setLegitEntrance: function() { 
    this.legitEntrance = true; 
}, 

// Send the user back to the home page 
kickUser: function() { 
    this.navigate("home", {trigger:true}); 
}, 

routes : { 
    ... 
}, 

// Example router function: Home page 
routeToHome: function() { 
    this.setLegitEntrance(); 
    var homeView = APP.HomeView.extend({ ... }); 
    homeView.render(); 
}, 

// Example router function: some other internal page 
routeToSomeOtherInternalPage: function() { 
    if(!this.legitEntrance) { 
    this.kickUser(); 
    return; 
    } 

    var someOtherInternalView = APP.SomeOtherInternalView.extend({ 
    ... 
    }); 

    someOtherInternalView.render(); 
} 

.... 
}); 

を、私は、このコードはいくつかをクリーンアップすることができ確信している、しかし、あなたが得ます一般的なアイデア。それが役に立てば幸い。

+0

ありがとうございます。それは私のために働いたthis.navigate( "home"、{trigger:true});私が探していたコードでした。 –

関連する問題