2017-04-24 9 views
1

動的ルートがモデルハッシュの場合、モデルインスタンスを動的ルートに渡すように見えません。モデルインスタンスは、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はモデルのハッシュを期待しているので、私は仮定(companyundefinedある)companies.hbslink-toに私がcompanies.editルートに企業モデルを渡していますが、データはcompanies.editになることはありません。

答えて

1

ラバーダッキングのスタックオーバーフローを使用して再び機能しました。

変更link-to IDを渡すために、ありませんモデル:あなたがIDを渡すと

{{#link-to 'companies.edit' company.id}}Edit{{/link-to}} 

は、あなたはあなただけのモデルを渡した場合のモデルフックが再び火災やモデルフックが無視させ。私はidを供給し、モデルフックにこの状況でハッシュを再投入することを強制する必要があるように思えるのは、完全にはわかりません。

多分、Emberは、ハッシュのどのモデルが使用されているのか、その他の副作用を推測できないのでしょうか?

+2

リンクがクリックされると、特定のルート遷移が開始され、ルートモデルフックが呼び出されて 'model data'が取得されます。あなたの場合は' model'自体を 'link-to'に指定しています必要なモデルはすでに解決されているため、モデルフックを再度呼び出す必要はありません。ここであなたはemberガイドの説明に行きますhttps://guides.emberjs.com/v2.12.0/routing/specifying-a-routes-model/#toc_dynamic-models – kumkanillam

+0

@kumkanillamなぜ、 '{{#link-to"会社。会社 "。}会社}}' 'は働いていますが、{{#会社にリンクしていません。 '.show'ルートはキャッシュされたモデルを取得していますが、' .edit'はありません。 –

+0

1.動的セグメントのないルートは常にモデルフックを実行します。 2.ダイナミックセグメントを持つルートは、URLを介して入力された場合のみモデルフックを常に実行します。 3.動的セグメントを持つ経路。リンクヘルパーを使用して遷移する場合、識別子のみを提供する必要があり、モデルフックが実行されます。 4.動的セグメントを使用して経路を設定します。リンク先ヘルパーを使用して遷移する場合、モデル/オブジェクトを提供すると、モデルフックは実行されません。 – kumkanillam

関連する問題