首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ember中的数据共享

ember中的数据共享
EN

Stack Overflow用户
提问于 2013-07-19 13:53:30
回答 1查看 1.3K关注 0票数 6

我试图了解如何在我的控制器/路由之间共享数据。

我有一个显示公司数据的应用程序。以下是我想要的路线:

代码语言:javascript
复制
 /                summary info
 /companies       list of all companies with some more detail
 /companies/:id   details about a single company

现在,所有三条路由所需的数据都包含在一个公司数据数组中。因此,我希望在应用程序启动时加载这些数据,然后将其用于每条路径。对于应该共享的控制器,还需要一些额外的方法。

很明显,第二和第三条路由是嵌套的,所以当我链接到特定的公司时,我可以通过传递该公司的数据来共享来自CompaniesController的数据:

代码语言:javascript
复制
{{#linkTo 'company' company}}{{ company.name }}{{/linkTo}}

但简单的路线是我被困在哪里。我想出了两个选择:

  1. 使用我需要的任何其他方法创建CompaniesController,并通过扩展来创建IndexController App.IndexController = App.CompaniesController.extend({}); 然后,据我所知,这两条路线都需要找到模型: App.Router.map(函数(){ this.resource('companies');});App.CompaniesRoute = Ember.Route.extend({ model: function() {model App.Company.find();} });App.IndexRoute = Ember.Route.extend({ model: function() {model App.Company.find();}); 似乎应该有更好的方法,因为我必须对我添加的每一条新路径(例如/revenue)重复这一点。
  2. summary资源中嵌套companies路由,并给它一个'/‘路径。我不喜欢的是,我的UI的“嵌套”与数据不匹配。我似乎还必须重新定义每个路由的model属性。

还有更好的选择吗?

博士:我应该如何在控制器之间共享数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-19 14:36:36

要共享数据beetwen控制器,正确的方法是使用 API

假设您的CompaniesController拥有您想要提供给其他控制器的所有数据,您应该通过needs来定义它,如果您定义了多个字符串,这可以是一个简单的字符串,也可以是一个字符串数组。

代码语言:javascript
复制
App.MyController = Ember.ObjectController.extend({
  needs: ['companies'],
  myFunction: function() {
    // now you can access your companies controller like this
    this.get('controllers.companies');
  }
});

为了使事情更容易访问,您可以另外定义一个绑定,例如:

代码语言:javascript
复制
App.MyController = Ember.ObjectController.extend({
  needs: ['companies'],
  companiesBinding: 'controllers.companies',
  myFunction: function() {
    // now you can access your companies controller like this
    this.get('companies');
  }
});

希望能帮上忙。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17747876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档