5

バックボーン 0.5.3 を使用して動作しているアプリがありますが、バックボーン 0.9.2 では動作しなくなりました。

Router.navigate() が何らかの理由で自分のルートを呼び出さないことを確認しました。

これが私のルーターです:

var Router = Backbone.Router.extend({
    routes: {
      '/mypage': 'mypage', 
    },

    mypage: function() { 
      // show page ...
   }
});

次のように手動でルートを呼び出すとうまくいきます:

Router.mypage()

また、アプリをデバッグするためにバックボーンの .navigate メソッドを上書きしようとしました...

var Router = Backbone.Router.extend({
    routes: {
      '/mypage': 'mypage', 
    },

    navigate: function(fragment, options) {
      console.log("navigate called");
      Backbone.history.navigate(fragment, options);
    },

    mypage: function() { 
      // show page ...
   }
});

... .navigate が呼び出されているようですが ...

Backbone.history.navigate(fragment, options);

...ルートを呼び出さないだけです。

私は PushState を使用しています。最初の呼び出しは次のとおりです。

Backbone.history.start({ 
  root: '/',
  pushState: true,
  silent: true
});

root および Silent パラメータなしですでに試しましたが、成功しませんでした。

繰り返しますが、これは Backbone 0.5.3 を使用して動作します。

返信を残してくださった皆様、ありがとうございます。

アヒム

4

3 に答える 3

2

細かいマニュアルから:

拡張する Backbone.Router.extend(properties, [classProperties])

カスタムルータークラスを作成することから始めます。[...]ルート定義で先頭のスラッシュを使用しないようにする必要があることに注意してください。

routesたとえば、先頭のスラッシュを削除するだけでよいと思います。

routes: {
  'mypage': 'mypage', 
},
于 2012-08-22T17:25:49.197 に答える
0

Router のインスタンスを作成する必要があります。

var router = new Router();
router.navigate(...);
于 2012-08-22T09:13:50.247 に答える