動的ルートがモデルハッシュの場合、モデルインスタンスを動的ルートに渡すように見えません。モデルインスタンスは、RSVP.hash()を使用している場合、link-to経由で動的ルートに送信されません。
私は企業のルートを持っている:
// routes/companies,js
export default Ember.Route.extend({
model() {
return this.get('store').findAll('company');
}
});
や企業/編集ルート:
// routes/companies/edit.js
export default Ember.Route.extend({
model(params) {
var store = this.store;
return Ember.RSVP.hash({
companies: store.findRecord('company', params.company_id),
companyTypes: store.findAll('companyType')
});
}
});
私の会社テンプレートは次のとおりです。
<!-- templates/companies.hbs -->
<div style="width:400px; height: 300px; overflow:true;float:left;">
<h2>Companies</h2>
{{#each model as |company|}}
<p>
{{#link-to "companies.show" company}}{{company.companyName}}{{/link-to}}
{{#link-to 'companies.edit' company}}Edit{{/link-to}}
</p>
{{/each}}
{{#link-to 'companies.new'}}New{{/link-to}}
</div>
{{outlet}}
私は、動的に直接移動した場合ルート、すべて正常に動作します。
しかし、companies.edit
はモデルのハッシュを期待しているので、私は仮定(company
がundefined
ある)companies.hbs
でlink-to
に私がcompanies.edit
ルートに企業モデルを渡していますが、データはcompanies.edit
になることはありません。
リンクがクリックされると、特定のルート遷移が開始され、ルートモデルフックが呼び出されて 'model data'が取得されます。あなたの場合は' model'自体を 'link-to'に指定しています必要なモデルはすでに解決されているため、モデルフックを再度呼び出す必要はありません。ここであなたはemberガイドの説明に行きますhttps://guides.emberjs.com/v2.12.0/routing/specifying-a-routes-model/#toc_dynamic-models – kumkanillam
@kumkanillamなぜ、 '{{#link-to"会社。会社 "。}会社}}' 'は働いていますが、{{#会社にリンクしていません。 '.show'ルートはキャッシュされたモデルを取得していますが、' .edit'はありません。 –
1.動的セグメントのないルートは常にモデルフックを実行します。 2.ダイナミックセグメントを持つルートは、URLを介して入力された場合のみモデルフックを常に実行します。 3.動的セグメントを持つ経路。リンクヘルパーを使用して遷移する場合、識別子のみを提供する必要があり、モデルフックが実行されます。 4.動的セグメントを使用して経路を設定します。リンク先ヘルパーを使用して遷移する場合、モデル/オブジェクトを提供すると、モデルフックは実行されません。 – kumkanillam