2013-04-17 43 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,也足以说明如何你正在导航到另一个视图? –

相关问题