如何从另一个“需要”的控制器初始化控制器?

时间:2013-07-19 15:27:21

标签: ember.js

假设我有两个控制器,CompaniesControllerIndexController。事实证明,Index路由所需的所有数据都来自CompaniesController。所以,我已经指定了我的IndexController

App.IndexController = Ember.ArrayController.extend({
    needs: 'companies',
});

如果CompaniesController已经初始化,这种情况很有效,但是我第一次访问该网站时呢? CompaniesController是空的。

因此,我需要在CompaniesController内初始化IndexController的数据。我该怎么做?

2 个答案:

答案 0 :(得分:5)

setupController

中使用controllerForIndexRoute
App.IndexRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('company');
  },
  setupController: function(controller, model) {
    this.controllerFor('companies').set('model', model);
  }
});

答案 1 :(得分:1)

听起来像你可能想要扭转依赖关系并让你的CompaniesController依赖于Application,如下所示:

App.CompaniesController = Ember.ArrayController.extend({
    needs: 'application',
    contentBinding: 'controllers.application.companies'
});

然后,只需在首次加载基本路径时根据需要初始化应用程序。