2017-09-18 22 views
-1

現在、私は "フォームA"と呼ばれるフォームを持っています。私はこのフォーム、編集、作成、およびリストのための多数のビューを作成しました。私は親のIDとして "フォームAのID"を引き出す "フォームB"と呼ばれるフォームを作成できるようにしたい。私が "フォームA"の下ですべてのフォームBのリストを持つことを可能にするために(必須の1対多数の関係)。ここでEmber Jsネストされたフォーム

{{#link-to 'form-a.form-b.listing' form-a.id}} <!--Link to a controller --> 
     <span class="btn btn-primary"> form b </span> 
{{/link-to}} 

は、だから私はのIDを通じてプルしようとしているにも私のルータ

this.route('form-a', function() { 
    this.route('new'); 
    this.route('listing'); 
    this.route('edit', {path: '/edit/:form-a_id' }); 
    this.route('form-b', function() { 
     this.route('listing', {path: '/listing/:form-a_id'}); 
     this.route('new'); 
    }); 
    }); 

次のとおりです。だから、私のリストの下で、現時点では、私は、各項目については、このリンクを持っている「を形成」のためにform-aを入力します。しかし、私は次のやり方と、 "form a"をリストのコントローラで正しく引き出し、それを各 "form B"の親IDとして使用する方法を不明確にしているので、ここではちょっとしたことになります。あまりにも多くの関係を持つ入れ子にされたフォームを持つより良い方法があるのですか、それとも最善の方法でこれをやりますか?

コーディングの壁にぶつかったので、誰かがこの問題を助けてくれることを願っています。説明が必要な場合は、自分の問題を説明するのが大変なことを知っているので、質問してください。

答えて

1

この投稿はEmber 2.x.xに適用され、2.15として書かれています。

多くの手助けをするのはparamsFor()です。

あなたのUIが多少のことを指示するため、「正しい」ルーティング構造とは言い難いですし、正確なURLの重要性がわかりません。

複数のフォームがあると仮定してルートを設定する方法は次のとおりです。

model(params) { 
    console.log(params['form-a_id']) 
    // using the [] accessor since dashes don't work for normal dictionary nav 
} 

形態において:上記のコードで

this.route('form-as', function() { 
    this.route('form-a', {path: '/:form-a_id'}, function() { 
     this.route('new'); 
     this.route('listing'); 
     this.route('edit'); 
     this.route('form-b', function() { 
     this.route('listing', {path: '/listing'}); 
     this.route('new'); 
     }); 
    }); 
    }); 

は、形態Aの下に新しい、リスト、および編集フォームへのルートのモデルフックでparams介しIDをアクセスする必要がありますBセグメント、上場と新しいが、このようなフォームのパラメータへのアクセスを得ることができます。

model() { 
    console.log(this.paramsFor('form-as.form-a')) 
} 

は、これらのdasherized idとモデル名には注意してください。彼らはおそらくバグの原因です。私は100%確信していません。私はそれらを避ける。 paramsFor()の詳細については

、ガイドでReusing Route ContextDynamic Segments

を見ます
関連する問題