2012-09-20 49 views
0

对于路线/仪表板我有间控制器或共享控制器之间共享的对象,DashboardController在DashboardView命名网点 & 2不同。 /仪表板路线看起来像DashProjectsViewProjectSummaryView应该更新项目(项目)上点击以下Ember.js:彼此

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

现在的

connectOutlet

什么应该是控制器之间共享对象(在这种情况下为项目)的理想方式。

一种做法是在App.currentProject中创建一个共享的全局对象,但它破坏了目的。

我认为,DashboardController要坚持一个对象,并DashProjectsProjectSummary要访问它。任何指导/指针都是受欢迎的。

回答

2

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

+0

感谢您的链接。但是,在哪里应该编写connectController?在connectOutlet中? 例如我有/仪表板和/统计页面,我需要相同的控制器。一种做法是,我在两个路由的connectOutlets上写connect connectController。有没有其他的地方或方式? – Nachiket

+0

我想你可以在应用程序准备就绪时定义App.ready函数。请参阅http://www.lukemelia.com/blog/archives/2012/08/23/architecting-ember-js-apps/ slide 31获取示例 –

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。

+0

感谢您使用代码段获取答案。 – Nachiket