0

この一見単純な問題を解決できないようです。

バックボーン/マリオネット アプリケーションがあり、ルーターを次のように定義します。

app.utils.AppRouter = Backbone.Marionette.AppRouter.extend({

initialize: function(){

    this.route("", "home", function(){
        console.log("In home!");
        app.layout.content.show(new app.views.BrowseRestaurantsLayout());
    });

    this.route("account", "account", function(){
        console.log("In account!");
        app.layout.content.show(new app.views.AccountView());
    });
}
});

コードの別の場所で、#accountページに移動する必要があるため、次のように呼び出します。

 app.router.navigate('account', {trigger:true});

URL が に変わり#account、自分のAccountViewページが一瞬表示されてから消え、ホームページに置き換わっていることがわかります。

変更をトリガーすると、コンソールに次のように表示されます。

In account! 
In home! 

私は何が欠けていますか?

4

3 に答える 3

1

テンプレートを確認しましたか?同様の問題があり、リンクの href に問題があることがわかりました。

  <a href=#"></a>

URLを実際に必要なものに一時的に切り替えた後、ルーターが私をルートに送り返す原因となりました。

于 2013-03-15T04:27:06.163 に答える
1

ホーム ルートは、アカウント ルートの後に呼び出されるキャッチオールである可能性があります。

これにルートを変更するとどうなりますか?

this.route("/", "home", function(){
    console.log("In home!");
    app.layout.content.show(new app.views.BrowseRestaurantsLayout());
});

あるいはルートの順番かもしれません。最後にホーム ルーターを追加してみてください。

于 2012-08-09T20:05:21.693 に答える
0

これで何かが解決するかどうかはわかりませんが、ルーターの構成方法が奇妙です。Marionette の appRouter の機能を使用していないため、その必要はないと思います。初期化メソッドでルートを構成することはありません。このようにルーターを構成することは、より「バックボーンのような」ものになります。


app.utils.AppRouter = Backbone.Router.extend({

  routes: {
    "": "home",
    "account": "account"
  },

  home: function(){
    console.log("In home!");
    app.layout.content.show(new app.views.BrowseRestaurantsLayout());
  },

  account: function(){
    console.log("In account!");
    app.layout.content.show(new app.views.AccountView());
  }
});

ルートを定義する方法が関係している可能性があります。

于 2012-08-09T21:10:42.357 に答える