私のアプリには と の 2 つのモデルが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
は 2 か月間で異なる配列を持っています。最初に 4 月にアクセスすると、5 月にアクセスすると、Ember はストアから同じデータであると判断したものを取得します。ただし、更新された契約は取得されません。
これを解決するには、次の 2 つの方法が考えられます。
の
setupController
フックで、MonthRoute
にコンテンツを設定しますContractsController
。id
会社と契約の両方の を削除embedded: always
し、JSON ペイロードのように送信します。
これを達成するための正しい/慣用的な方法は何ですか?