1

2つのルートで「検索」ページを作成したいと思います。

/index-デフォルトルート
/:time/:filter検索-ユーザーがいくつかのパラメータを入力した後のルート、セグメントfilterは手動でシリアル化/逆シリアル化されます

現在、を使用してこれらのルート間を移行transitionToしていますが、アプリケーション全体を再レンダリング(再挿入?)するため、移行を停止したいと思います。

私がやりたいこと:URLを変更します(フォームを更新/する/:time/:filterか、単に更新:timeして:filterセグメント化します)が、アプリケーションの現在の状態を保持します。

そのようなことは可能ですか?

Ember.jsバージョン:1.0.0-PRE.2
JsFiddle:http: //jsfiddle.net/hKzG9/2/

4

1 に答える 1

2

あなたが探しているテクニックは、アウトレットをネストすることです。テンプレートには任意の数のアウトレットを含めることができ、アウトレットに挿入されたテンプレートは独自のアウトレットにすることもできます。この例では、新しい状態に入るときは常にアプリケーションテンプレートアウトレットに接続しています。これにより、アプリケーション全体が再描画されます。

事実上、必要なのはHomeViewのテンプレートにもアウトレットがあることです。アプリケーションのテンプレートのアウトレットに、独自のアウトレットを持つHomeViewのインスタンスを入力します。検索を実行する(そしてsearch状態に入る)と、HomeViewのテンプレート内のアウトレットを別のビューに接続して結果を表示します。

これを反映するようにフィドルを更新しました:http://jsfiddle.net/hKzG9/3/

data-template-name="app-page-home"これで{{outlet}}セクションが作成されdata-template-name="app-results"、一致するビューとコントローラーとともにが追加されました。

この状態では、2回目の代わりにsearch電話をかけていることがわかります。router.get('homeController').connectOutlet('results')router.get('applicationController').connectOutlet('home')

これにより、すでに表示されている検索コントロールが再描画されなくなり、検索結果用の新しい領域が挿入されます。

于 2012-12-16T14:25:26.193 に答える