0

DurandalJSを使用しています。私のビューwelcome.htmlには子ビューがありますmymodule:

welcome.html:    
<div>
            <!--ko compose: {model:'viewmodels/mymodule', activate: true}-->
            <!--/ko-->
</div>

期待どおり、ビューがアクティブになるたびに関数activateが呼び出されます。しかし、が非アクティブ化されると (別のビューに移動すると)、機能し、mymodule.js で呼び出されません。mymodulewelcome.htmlwelcome.htmlcanDeactivatedevativate

これはどのように修正できますか?

4

1 に答える 1

2

Compose バインディングで activate:true を使用しても、ビュー モデルの完全なライフサイクルは管理されません。そのアプローチでは activate 関数のみが呼び出されます。(ご覧のとおり)。

すべてのライフサイクル イベントを取得するには、アクティベーターを使用してビュー モデルのライフサイクルを管理する必要があります。

これを行うにはいくつかのオプションがあります。詳細については、デュランダルのドキュメントを参照してください。 http://durandaljs.com/documentation/Hooking-Lifecycle-Callbacks/ 具体的には、そのページの「Activator Callbacks」セクションを見てください。

基本的には、ルーターを使用してビューモデルをアクティブにするか、自分でアクティベーターを作成することになります。

于 2013-04-17T16:53:10.103 に答える