0

私が持っているルート/dashboardの場合、 DashboardControllerと DashboardView の 2 つの異なる名前付きアウトレットがあります

/dashboard ルートのconnectOutletは次のようになります

connectOutlets: function(router) {
    var appController = router.get('applicationController');
    appController.connectOutlet('dashboard', {});

    var dashboardController = router.get('dashboardController');
    dashboardController.connectOutlet({
        name: 'dashProjects',
        outletName: 'dashProjects',
        context: App.Project.find()
    });                                     
    dashboardController.connectOutlet({
        name: 'projectSummary',
        outletName: 'projectSummary'
    }); 
}

DashProjectsViewの項目 ( Project ) をクリックすると、ProjectSummaryViewが更新されます。

コントローラー間でオブジェクト (この場合はProject )を共有する理想的な方法は何ですか。

1 つの方法は、 App.currentProjectで共有グローバル オブジェクトを作成することですが、目的に反します。

DashboardControllerはオブジェクトを保持し、DashProjectsProjectSummaryはそれにアクセスする必要があると思います。ガイダンス/ポインタは大歓迎です。

4

2 に答える 2

2

おそらく、https://github.com/emberjs/ember.js/blob/master/packages/ember-views/lib/system/controller.js#L173を見て、dashProjectsControllerをprojectSummaryControllerに接続することができます。

于 2012-09-20T12:34:03.403 に答える
1
connectOutlets: function() {
    router.get('dashboardController').connectControllers('projectSummary')
    ... Other code you might have here ...
}

App.DashboardController: Ember.Controller.extend({
    projectSummaryController: null,
    ... Other code in your controller ...
}

その後、dashboardControllerからprojectSummaryControllerを取得できます。

于 2012-09-20T13:02:34.570 に答える