5

Ember.Routerコントローラーとビューで処理する他の可能性はありますか? 私のアプリの構造は通常、対応する依存関係を処理する require.js に依存しています。

私の例では、App.ApplicationController をメインのルーター コントローラーとして実行しています。

ここに jsfiddle があります: http://jsfiddle.net/mediastuttgart/uMKGt/1/

しかし、これを手動で設定する機会はありますか? このコミットメッセージを見つけましたhttps://github.com/emberjs/ember.js/commit/be69395f5eec4187b1df052d7386bcda45f79475ここで、コントローラーとビューを手動で設定する方法を確認できます(とにかくこれを機能させることができませんでした)。しかし、次のような例は見つかりませんでした:

App = Ember.Application.create();

App.MyController = Ember.Controller.extend({});
App.MyView = Ember.View.extend({});

Router = Ember.Router.extend({
    applicationController : App.MyController,
    root : Ember.Route.extend({
        index : Ember.Route.extend({
            route : '/',
            connectOutlets : function (router) {
                router.get('applicationController').connectOutlet(App.MyView);
            }
        })
    }),
    ...
});

編集

これをもう少し詳しく説明しようと思います。依存関係を管理するためにrequire.jsを使用していますが、アプリケーション全体の独自の部分を担当する複数のコントローラーがあります。ニュースレターの登録フォームがあるとします。このシナリオで使用されるコントローラーは、次のように構成されています。

- app
-- controller
--- newsletter
---- signup.js
--- cart
--- checkout
-- view
-- model
-- router
-- template

Em.Provide('App.Controller.Newsletter');でオブジェクトを作成する名前空間を生成するためにカスタム関数を使用するためApp.Controller.Newsletterです。このオブジェクトは、ニュースレター アプリケーション全体のコントローラー ベースとして機能します。まずApp.Controller.Newsletter.Signup = Ember.Controller.extend({});、このインスタンスをルーターの「ApplicationController」として渡す必要があります。ご覧のとおり、単にApp.ApplicationControllerEmber.Router のコントローラーをインスタンス化するために使用することはできません。

4

1 に答える 1

9

requirejsについては何も知りませんが、唯一のことは定義することだと思います

App.ApplicationController = Ember.Controller.extend({...behavior here...})

そして、電話するとき

App.initialize()

フレームワークは、このコントローラーをルーターに自動的に挿入します。

于 2012-06-25T18:55:43.773 に答える