在我的应用程序中有两个模型:App.Company
和App.Contract
. 一家公司有很多合同。我正在使用 Ember 数据。
我想显示所有具有在给定月份开始的合同的公司。例如,/Jan-2013
只显示那些从 2013 年 1 月开始有合同的公司。我还想只显示相关合同。
所以,我有一个Month
资源:
App.Router.map(function() {
this.resource('month', { path: '/:month_id' });
});
每个公司和合同都有一个id
. 我的问题是,设置控制器的最佳方法是什么?
目前我每个月只从服务器返回必要的数据。例如,2013 年 4 月将返回
{
month: {
id: "Apr-2013",
company_ids: [5, 23, 905, 4, 59]
},
companies: [
{
id: 5,
name: "Acme, Inc.",
contract_ids: [94, 84, 20, 1]
},
...
],
contracts: [
{
id: 94,
date: "2013-04-02",
new_monthly_fee: 50182
},
...
]
}
如果我以标准方式构建事物,我就会遇到问题。假设 id 5 的公司出现在 2013 年 4 月和 2013 年 5 月。但是这家公司contract_ids
在两个月内也有不同的数组。如果我第一次访问 April,当我访问 May 时,Ember 会从商店中检索它认为相同的数据;但它不会得到更新的合同。
我可以想到两种方法来解决这个问题:
在
setupController
钩子里MonthRoute
,设置上的内容ContractsController
。删除
id
公司和合同上的 s,并将它们作为embedded: always
JSON 有效负载发送。
实现此目的的正确/惯用方法是什么?