0
votes

For a route /dashboard I have, DashboardController & 2 different named outlets in DashboardView.

connectOutlet of /dashboard Route looks like following

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'
    }); 
}

Now on click on item(Project) in DashProjectsView, ProjectSummaryView should be updated.

What should be ideal way of sharing an object (in this case Project) between controllers.

One way of doing is creating an shared global object in App.currentProject, but it defeats the purpose.

I think, DashboardController should hold to an object and DashProjects and ProjectSummary should be accessing it. Any guidance/pointers are welcome.

2

2 Answers

2
votes

Perhaps you could have a look at https://github.com/emberjs/ember.js/blob/master/packages/ember-views/lib/system/controller.js#L173, and connect dashProjectsController to projectSummaryController.

1
votes
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 ...
}

You can then get hold of your projectSummaryController from your dashboardController.