0

バックボーンルーターを使用していくつかの作業サンプルを実行しましたが、アドレスバーで直接使用されているルートを保護する方法はありますか?また、ユーザーがブラウザの戻るボタンを押しても、ルートがクリアされず、問題が発生します。これに対する最善の解決策は何ですか?

4

1 に答える 1

0

私はあなたが言っていることを理解していると思います-あなたはユーザーに特定の(ホームページ)ページからあなたのサイトに入るように強制したいのです。あれは正しいですか?

これは、たとえば、mobile-optimized-web-appを構築していて、ユーザーが常にスプラッシュ画面から入力できるようにする場合に便利です。私が行うことは、ルーターに「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();
 }

 ....
});

このコードはある程度クリーンアップできると確信していますが、一般的な考え方は理解できます。それが役に立てば幸い。

于 2012-05-08T13:16:48.410 に答える