【问题标题】:Ember.js: Share object among Controllers or share controller among each otherEmber.js:在控制器之间共享对象或在彼此之间共享控制器
【发布时间】:2012-09-20 11:04:57
【问题描述】:

对于 /dashboard 路线,我在 DashboardView 中有 DashboardController 和 2 个不同的命名出口。

/dashboard Route

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 应该持有一个对象,DashProjectsProjectSummary 应该访问它。欢迎任何指导/指点。

【问题讨论】:

    标签: ember.js ember-old-router


    【解决方案1】:

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

    【讨论】:

    • 感谢您的链接。但是 connectController 应该写在哪里呢?在连接插座?例如,我有 /dashboard 和 /statistics 页面,我需要相同的控制器。一种方法是,我在两条路由的 connectOutlets 上编写 connect connectController。有没有其他地方或者方式?
    • 我认为您可以在应用程序准备好时执行此操作,定义 App.ready 函数。示例见lukemelia.com/blog/archives/2012/08/23/… slide 31
    【解决方案2】:
    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2015-12-15
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多