0

バックボーンルーターを定義しました:

MyApp.router = new (Backbone.Marionette.Router.extend({
  routes: {
    "/m/:id": "openMovie",
    "m/:id": "openMovie"
  },

  openMovie: function(id) {...}
});

私のhtmlにはのようなリンクがあり/m/123ます。このリンクをクリックしても、バックボーンはopenMovie機能をトリガーしません-ブラウザは新しいページを開きます。この場合、バックボーンが履歴APIを使用しないのはなぜですか?バックボーンまたはマリオネットで修正するにはどうすればよいですか?

4

2 に答える 2

2

バックボーンpushStateサポートはオプトインです。すべてのルーターを初期化したら、呼び出します

 Backbone.history.start({pushState: true})

デフォルトの動作はhashchangeurl を使用してイベントをリッスンする#fragmentsため、 pushState を使用したくない場合は、ハッシュ URL でリンクを定義します。

<a href="#/m/123"></a> 
于 2013-02-08T13:43:57.543 に答える
1

互換性のあるバージョンが必要な場合:

if (!Backbone.History.started) {

       // Enable pushState for compatible browsers
       var enablePushState = true;  

       // Disable for older browsers
       var pushState = !!(enablePushState && window.history && window.history.pushState);

       Backbone.history.start({ pushState: pushState });
     }


> 
于 2013-02-09T11:21:39.100 に答える