【问题标题】:JavaScript Durandal child viewmodelJavaScript Durandal 子视图模型
【发布时间】:2013-04-17 12:52:13
【问题描述】:

我正在使用 DurandalJS。我的视图welcome.html 有一个子视图mymodule

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

正如预期的那样,每次激活视图welcome.html 时都会在mymodule 中调用activate 函数。但是当welcome.html 被停用(我导航到另一个视图)时,函数canDeactivatedevativate 不会在mymodule.js 中调用。

如何解决这个问题?

【问题讨论】:

    标签: durandal


    【解决方案1】:

    在 compose 绑定上使用 activate:true 不会管理视图模型的整个生命周期,只会使用该方法调用 activate 函数。 (如您所见)。

    要获取所有生命周期事件,您需要使用激活器来管理视图模型的生命周期。

    您有多种选择来执行此操作,请参阅有关此事的 durandal 文档以获取更多信息。 http://durandaljs.com/documentation/Hooking-Lifecycle-Callbacks/ 具体来说,请查看该页面的“激活器回调”部分。

    它基本上归结为使用路由器来激活您的视图模型或自己创建一个激活器。

    【讨论】:

    • 我在welcome.html 中编辑了ko compose 以绑定到welcome.js 中返回viewModel.activator(new mymodule()) 的属性。仍然没有在mymodule 中调用canDeactivatedeactivate 函数:(
    • 您介意发布更多代码,然后我可以告诉您如何解决它吗?特别是welcome.js,也足以显示您如何导航到另一个视图?
    猜你喜欢
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多