我试图了解如何在我的控制器/路由之间共享数据。
我有一个显示公司数据的应用程序。这是我想要的路线:
/ summary info
/companies list of all companies with some more detail
/companies/:id details about a single company
现在,所有三个路线所需的数据都包含在单个公司数据数组中。所以,我希望在应用程序启动时加载这些数据,然后用于每条路线。我还需要在控制器上需要共享的其他方法。
很明显,第二条和第三条路线是嵌套的,因此我可以CompaniesController
通过传入该公司的数据来共享链接到特定公司时的数据:
{{#linkTo 'company' company}}{{ company.name }}{{/linkTo}}
但总结路线是我卡住的地方。我想出的两个选项:
CompaniesController
使用我需要的任何其他方法创建,并通过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
)。summary
将路由嵌套在companies
资源中,并为其指定路径“/”。我不喜欢的是我的 UI 的“嵌套”与数据不匹配。似乎我还必须model
为每条路线重新定义属性。
还有其他更好的选择吗?
tl;dr:我应该如何跨控制器共享数据?