これが意図的な行動かどうかはわかりませんが、説明させてください。 動的セグメントを持つルートでtransitionToを使用すると、宛先ルートのモデルメソッドが呼び出されません。 基本的に、IDを使用してパラメーターを渡すだけで、適切なモデルをロードしたいと思います。
モデルは正常に読み込まれますが、正しいURLでページを更新すると。 デモンストレーションのためにcodepenをまとめました。
http://codepen.io/anon/pen/LsfhB
現在のバージョンは、コンソール「I'mhere」にログアウトします。 IndexRouteを見ると、コメントアウトされた遷移があります。 これが有効になっている場合、「I'mhere」はトリガーされません。
これは予想されますか? その場合、確認ルートのモデルをどこにロードする必要がありますか?
トランジションをthis.transitionTo('confirm', 1);
変更すると、期待どおりに機能します。
IIRCは、完全なモデルの代わりにプリミティブ(文字列、数値)を遷移に渡すと、それがIDであると判断し、それを使用してmodel
の呼び出しのパラメーターを作成しますが、複雑なものを渡すと(この場合はオブジェクト)、モデルを通過したものとして扱い、モデルフックを呼び出しません。
APIドキュメントは、完全なモデルの代わりにIDを渡す例でおそらく行うことができます: http :
それが理にかなっていることを願っています
今は理にかなっています。 コメント後の最初の直感的な質問は、複数のパラメーターをどのように渡すかということでした。 しかし、それらを別々の引数として渡すだけのようです。
this.transitionTo('confirm.url', 1, 'the-slug-I-want');
それは私にとってはうまくいきます。
ここで質問します。すべて動的セグメントを持つサブルートを持つルートがある場合:
例えば
this.route( 'organization'、{path: 'organizations /:organization_id'}、function(){
this.route( 'project'、{path: 'projects /:project_id'}、function(){
this.route( 'screen'、{path: 'screens /:screen_id'});
});
そして私は別のルート、例えば認証ルートにいます。 this.transitionTo( 'organization.project.screen'に移動すると、
{organization_id: 'grege23-234-4c3e-96fe-234423'}、
{project_id: '234234-23423-4b99-a492-234'}、
{screen_id: '34534-48f4-471d-ad17-3'45});
モデルがロードされていないため、何も表示されません。
どうやってこれに行くことができますか?
最も参考になるコメント
トランジションを
this.transitionTo('confirm', 1);
変更すると、期待どおりに機能します。IIRCは、完全なモデルの代わりにプリミティブ(文字列、数値)を遷移に渡すと、それがIDであると判断し、それを使用して
model
の呼び出しのパラメーターを作成しますが、複雑なものを渡すと(この場合はオブジェクト)、モデルを通過したものとして扱い、モデルフックを呼び出しません。APIドキュメントは、完全なモデルの代わりにIDを渡す例でおそらく行うことができます: http :
それが理にかなっていることを願っています