Ember.js 余烬中的数据共享
我试图了解如何在控制器/路由之间共享数据 我有一个显示公司数据的应用程序。以下是我想要的路线:Ember.js 余烬中的数据共享,ember.js,Ember.js,我试图了解如何在控制器/路由之间共享数据 我有一个显示公司数据的应用程序。以下是我想要的路线: / summary info /companies list of all companies with some more detail /companies/:id details about a single company 现在,所有三条路线所需的数据都包含在公司数据的单个数组中。因此,我希望在应用程序启动时加载这些数据,然后用于每条路线。
/ summary info
/companies list of all companies with some more detail
/companies/:id details about a single company
现在,所有三条路线所需的数据都包含在公司数据的单个数组中。因此,我希望在应用程序启动时加载这些数据,然后用于每条路线。我还需要在控制器上共享其他方法
很明显,第二条和第三条路由是嵌套的,因此当我链接到特定公司时,我可以通过传递该公司的数据来共享来自companyescontroller
的数据:
{{#linkTo 'company' company}}{{ company.name }}{{/linkTo}}
但总结路线是我被卡住的地方。我想出了两个选择:
companyescontroller
,并通过扩展创建IndexController
App.IndexController = App.CompaniesController.extend({});
然后,据我所知,两条路线都需要找到模型:
App.Router.map(function() {
this.resource('companies');
});
App.CompaniesRoute = Ember.Route.extend({
model: function() {
return App.Company.find();
}
});
App.IndexRoute = Ember.Route.extend({
model: function() {
return App.Company.find();
}
});
似乎应该有更好的方法,因为我必须为我添加的每个新路线重复这一点(例如,/revenue
)摘要
路由嵌套在公司
资源中,并为其指定路径“/”。我不喜欢的是UI的“嵌套”与数据不匹配。似乎我还必须为每条路线重新定义模型
属性tl;dr:我应该如何在控制器之间共享数据?要在控制器之间共享数据,正确的方法是使用 假设您的
companyescontroller
拥有您希望提供给其他控制器的所有数据,您应该通过needs
对其进行定义,这可以是一个简单的字符串,也可以是一个字符串数组(如果您定义了多个)
App.MyController = Ember.ObjectController.extend({
needs: ['companies'],
myFunction: function() {
// now you can access your companies controller like this
this.get('controllers.companies');
}
});
为了使事情更容易访问,您可以另外定义一个绑定,例如:
App.MyController = Ember.ObjectController.extend({
needs: ['companies'],
companiesBinding: 'controllers.companies',
myFunction: function() {
// now you can access your companies controller like this
this.get('companies');
}
});
希望有帮助。谢谢。从骨子里出来,我很难对这件事动脑。控制器似乎只能用于数据共享;在主干网中,我有一个
公司
集合,多个视图可以访问该集合。简言之,在ember中创建一个控制器仅用于存储和共享模型数组是否合适?如果您有“应用程序设置”之类的数据,则使用一个不属于路由/控制器/视图组合的设置控制器是可以的。然后,您可以使用需求API将您的设置提供给其他控制器。但是,如果您的数据与您定义的资源树相关,那么为每个资源指定一个特定的控制器是更好的方法,您仍然可以共享所有类型的控制器。很抱歉打断一下,我想澄清一些问题@直觉像素:这是反方向的吗?索引路线需要公司?这个需要
在容器上查找还是路线挂钩也会开火?@DarshanSawardekar,请便:)你说的相反方向是什么意思?就绑定而言?比如说与上述/
摘要路由对应的索引控制器
,使用需要
公司
。现在它有一个控制器引用,但是companyescontroller
从哪里获取数据?公司路线挂钩/设置控制器是否开火?