Ember.js:在控制器之间共享对象或彼此共享控制器

时间:2012-09-20 11:04:57

标签: ember.js ember-old-router

对于路径 / 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 )的理想方式。

一种方法是在 App.currentProject 中创建共享的全局对象,但它失败了。

我认为, DashboardController 应该保留一个对象, DashProjects ProjectSummary 应该访问它。欢迎任何指导/指示。

2 个答案:

答案 0 :(得分:2)

也许您可以查看https://github.com/emberjs/ember.js/blob/master/packages/ember-views/lib/system/controller.js#L173,并将dashProjectsController连接到projectSummaryController。

答案 1 :(得分: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。