1

独自のルートでアクセスできるモーダル ビューを作成したい。

問題は、内部で大きなデータが計算されているアプリの他の状態/ビュー/ルートの上にこのビューを表示したいということです。

ネストされたルートでできると思いました。子ルートへの移行を実行すると、何も再計算されず、子のみが表示されます - とても良いです。

しかし、実際には、いくつかのリソースに子ルートを追加しようとしたときに. この質問に記載されている問題を満たしています。したがって、ネストされたルートは解決策ではありません。

解決策とは?何か案は?

4

2 に答える 2

2

それが独自のルートにある必要がある場合、より適切なアプローチは、ルートのシリアライゼーションの競合を避けるために、「前のルート」コンテキストを渡す別のルートを持つことです。別のルートを持たないことにオープンな場合は、新しいアウトレットで「モーダル」ビューをレンダリングするだけで、コンテキスト「ブレッドクラム」をモーダル ルートに渡すオーバーヘッドを運ぶ必要はありません。

于 2013-09-30T15:18:18.950 に答える
0

私の解決策はここにあります。(実際には、いくつかのチートを含むネストされたルートです)

1)モーダルは「モーダル」アウトレットに行きます

2) 異なる名前のモーダルのルートがありますが、パス部分は同じです。

this.resource('category', { path: '/category/:category_id' }, function () {
    /* Different names for the same modal route */
    this.resource('modal1', { path: 'card/:card_id' });
});

// url - semantic/books/card/id99
this.resource('semantic', { path: '/semantic/:semantic_id' }, function () {
    /* Different names for the same modal route */
    this.resource('modal2', { path: 'card/:card_id' });
});

3) transitionTo を実行するとき、親ルートのコンテキストを渡す必要があります

var curPath = this.controllerFor("application").currentPath;

if (/^category/g.test(curPath))
    this.transitionToRoute('modal1', { category_id: cat_id, card_id: card_id ) });
else if (/^semantic/g.test(curPath)) 
    this.transitionToRoute('modal2', { semantic_id: sem_id, card_id: card_id ) });              
于 2013-10-01T07:52:11.670 に答える