我正在使用DurandalJS。我的观点welcome.html
有一个子视图mymodule
:
welcome.html:
<div>
<!--ko compose: {model:'viewmodels/mymodule', activate: true}-->
<!--/ko-->
</div>
每次激活视图activate
时,都会在mymodule
中调用welcome.html
函数,如预期的那样。但是当welcome.html
停用时(我导航到另一个视图),mymodule.js中不会调用函数canDeactivate
和devativate
。
如何解决这个问题?
答案 0 :(得分:2)
在compose绑定上使用activate:true不会管理视图模型的整个生命周期,只会使用该方法调用activate函数。 (正如你所看到的那样)。
要获取所有生命周期事件,您需要使用激活器来管理视图模型的生命周期。
您可以通过多种方式进行此操作,请参阅有关此问题的durandal文档以获取更多信息。 http://durandaljs.com/documentation/Hooking-Lifecycle-Callbacks/ 具体来说,请查看该页面的“Activator Callbacks”部分。
它基本上归结为使用路由器激活视图模型或自己创建激活器。