2013-04-17 46 views
0

我正在使用DurandalJS。我的觀點welcome.html有一個子視圖mymoduleJavaScript Durandal子視圖模型

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

activate功能每次視圖welcome.html被激活,如預期的時間稱爲mymodule。但是,當welcome.html已停用(我導航到另一個視圖)時,函數canDeactivatedevativate未在mymodule.js中調用。

這怎麼解決?

回答

2

在合成綁定上使用activate:true不管理視圖模型的整個生命週期,只有激活函數將使用該方法調用。 (正如你所看到的)。

要獲取所有生命週期事件,您需要使用激活器來管理視圖模型的生命週期。

您有幾個選擇可以做到這一點,請參閱有關此問題的durandal文檔以獲取更多信息。 http://durandaljs.com/documentation/Hooking-Lifecycle-Callbacks/ 具體而言,請查看該頁面的「Activator回調」部分。

它基本上歸結爲使用路由器激活您的視圖模型或自己創建激活器。

+0

我編輯了'welcome.html'中的'ko compose'來綁定到'welcome.js'中的一個屬性,它返回'viewModel.activator(new mymodule())'。 'canDeactivate'和'deactivate'函數不在'mymodule'中調用:( – user2290746

+1

你介意發佈多一點代碼,那麼我可以告訴你如何解決它?特別是welcome.js,也足以說明如何你正在導航到另一個視圖? –

相關問題