1

これについては多くの質問がありますが、最新の durandal バージョン (2.1.0) で動作する答えが見つかりません。

これを使用して、ページ内に子ビューモデルを表示しています:

<div data-bind="compose: { model: activeScreen, activationData: {id:selectedId}}"></div>

activeScreen次のような文字列を渡すオブザーバブルです。viewmodels/child

それは機能し、子ビューモデルがアクティブになり、画面に表示されます。しかし、変更activeScreenすると、子ビューモデルを実行する必要がありますdeactivate。出来ますか?どのように?

4

1 に答える 1

3

子ビューがシングルトン モジュールではなくインスタンス モジュールである限り、そのコードをdetachedハンドラーに移動できます。これも私たちが行っていることです。すべての子ビューは、子ルーティングではなく、動的構成によって管理されます (これは、エンタープライズ スタイルのアプリでは機能しません)。deactivateハンドラーは、ルーティングのコンテキストで機能します

動的合成とは、オブザーバブルを介した子ビュー/ビューモデルのスワッピングのことです。

しかし、繰り返しになりますが、これを機能させるための鍵は、子ビューがインスタンス モジュールでなければならないということです。そうすれば、実際にメモリからアンロードされます。シングルトンを使用すると、モジュールが切り離されることはありません (ただし、これを強制的に切り離す方法はあります)。

于 2014-07-31T18:10:50.190 に答える