7

アプリをいくつかのアプリに分割しました。

main.js
app.js
app1/
  |- routing
  |- controller
  |- app
app2/
  |- routing
  |- controller
  |- app

1) でルーターを使用しようとすると、機能しますapp1
2) でルーターを使用しようとすると、機能しapp2ません。3)作業中のルーター
の行にコメントすると。'js/app1/routing',main.jsapp2

なぜこのような動作をするのですか?
github で複数のルーティングと requirejs を使用するアプリの例はありますか?

ありがとう。

これが私のコードです:


** main.js **

define([
    'js/app',
    'js/app1/routing', // the routers in this app work
    'js/app2/routing'  // the routers in this app do not work but 
                       // if I comment the previous line (js/app1/routing',) 
                       // they works
],
function (App)
{
    "use strict";
    App.initialize();
});

** app.js **

define([],
function ()
{
    "use strict";
    var app = new Backbone.Marionette.Application();

    return app;
});

** app1/ルーティング **

define(['backbone','app1/controller'], function(Backbone, controller)
{
    "use strict";
    var Router = Backbone.Marionette.AppRouter.extend({

        appRoutes: {
            '*defaults': 'index1'
        }

    });
    return new Router({
        controller: controller
    });

});

** app2/routing.js **

define(['backbone','app2/controller'], function(Backbone, controller)
{
    "use strict";
    var Router = Backbone.Marionette.AppRouter.extend({

        appRoutes: {
            'app2': 'index2'
        }

    });
    return new Router({
        controller: controller
    });

});
4

1 に答える 1

5

この問題は、ルーター ファイルがロードされ、ルーターが作成される順序が原因である可能性があります。

バックボーンのhistoryオブジェクトは、ルートの実行を担当します。ルーターがインスタンス化されると、すべてのルーターで定義されたすべてのルートが収集されます。次に、ブラウザの URL の変更を監視します。変更が見られると、最初に利用可能な一致するルートを取得し、その 1 つのルートを起動し、他のルートはスキップします。

*defaultsルートを定義すると、すべてがこれに一致します。したがって、このルートが最初に読み込まれると、他に何もヒットしません。したがって、この 1 つのルートが常にヒットしないように、ルート パラメータをより明示的に指定するか、このルーターが最後にロードされるようにする必要があります。

于 2012-06-17T18:08:03.640 に答える