Search code examples
ember.jsember-old-router

Ember.js: Share object among Controllers or share controller among each other


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.


Solution

  • 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.