0

对于我拥有的路线/仪表板, DashboardController和DashboardView中的 2 个不同的命名插座。

/dashboard RouteconnectOutlet如下所示

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中的项目(项目),应该更新 ProjectSummaryView 。

在控制器之间共享对象(在本例中为Project )的理想方式应该是什么。

一种方法是在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 回答