コントローラー/ルート間でデータを共有する方法を理解しようとしています。
企業に関するデータを表示するアプリケーションがあります。ここに私が欲しいルートがあります:
/ summary info
/companies list of all companies with some more detail
/companies/:id details about a single company
現在、3 つのルートすべてに必要なデータは、会社データの 1 つの配列に含まれています。そのため、アプリの起動時にそのデータを読み込んで、各ルートで使用したいと考えています。コントローラーで共有する必要がある追加のメソッドもあります。
2 番目と 3 番目のルートがネストされていることは明らかなのでCompaniesController
、特定の会社にリンクするときに、その会社のデータを渡すことで、そのデータを共有できます。
{{#linkTo 'company' company}}{{ company.name }}{{/linkTo}}
しかし、要約ルートは私が立ち往生している場所です。私が思いついた2つのオプション:
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: コントローラー間でデータを共有するにはどうすればよいですか?