2

アプリケーションに次の Ember.Router があります。

App.Router = Ember.Router.extend({
    location: 'hash',
    rootElement: '#content',
    enableLogging: true,

    root: Ember.State.extend({
        route: '/',

        index: Ember.State.extend({
            route: '/',
            redirectsTo: 'main.welcome'
        }),

        main: Ember.State.extend({
            route: '/main',

            welcome: Ember.ViewState.extend({
                route: '/welcome',
                view: App.WelcomeView
            })
        })
    })
});

私ができるようにしたいのは、宣言された後に App.Router に追加することで追加のルートを追加することです (これは任意のモジュールを有効にするためです)。App.initialize() の前または後に行われるかどうかは重要ではありません。

モジュールのルート オブジェクトがどのように見えるかの例を次に示します。

Module.routes = Ember.State.extend({
    route: '/module',
    index: Ember.State.extend({
        route: '/'
        view: Module.IndexView
    })
});

この問題に関するヘルプは大歓迎です。

4

1 に答える 1

5

エンリッチしたい状態を抽出して、後で再度開くことができます。

App = Ember.Application.create();

App.RootState = Em.State.extend({
    index : Em.State.extend({
        route : '/'
    }),
    main: Em.State.extend({
        route : '/main',
        index : Em.State.extend({
            route : '/'
        })
    })
});

App.Router = Ember.Router.extend({
    location : 'hash',
    enableLogging : true,
    root : App.RootState
});

// later...

App.RootState.reopen({
    module: Em.State.extend({
        route : '/module',
        index : Em.State.extend({
            route : '/'
        })
    })
});

App.initialize();​

編集: GitHub の最新バージョンを使用します

于 2012-06-07T12:49:03.800 に答える