【问题标题】:Durandal canDeactive lifecycle callbackDurandal canDeactive 生命周期回调
【发布时间】:2013-06-21 12:30:40
【问题描述】:

当前,当我返回 false 时,我的 canDeactive 回调被调用了两次。

调用堆栈相同,唯一的区别是在 system.js 中,获取函数 args 变量在每次调用时具有不同的值。

第一次命中嵌套 setTimeout 中的断点时,args 具有我导航查看的值。

第二次(分秒) args 值是我当前的观点,我已经说过可能不会停用。

这听起来对任何人来说都很熟悉吗?我是否可能在每个视图中对我的 require 语句做错了什么

编辑更多信息

我的设置:(- 表示嵌套)

壳牌

-标题

-view1

--嵌套视图(使用敲除绑定)

-view2

-view3

--嵌套视图

为了在视图之间导航,我在每个视图上都有一个属性,说明它的页面标题以及任何链接项,例如 view1 header: "Page 1", links [{path: "#/view2"}] .我的每一个视图都“需要”标题视图,并将这些选项设置为激活(我不喜欢这篇文章,因为它感觉像是一个黑客,但那是另一天的事了)。

单击链接时,我调用 shell 上的一个函数,该函数又调用 router.navigateTo(点击的项目路径) 或返回 view3。

我可以确认此问题发生在所有视图(1,2 和 3)中,并且 canActivate 以及其他生命周期回调按预期以正确的顺序触发一次。

抱歉缺少代码,但我不确定在哪里看,因为它似乎是控制导航要求的东西(由于上面提到的单一差异)

【问题讨论】:

  • 确实需要看一些代码来帮忙。 canDeactivate 应该只在你试图离开视图时被调用,我最好的猜测是你有一个试图离开的函数,然后你在你的 canDeactivate 方法中再次调用该函数。
  • 遗憾的是它与 canDeactivate 回调的内容无关,因为我已经证明了这种行为: canDeactivate: function (isClose) { return false; } 有关我当前解决方案的更多信息,请参阅上面的编辑。
  • 请张贴您的 canDeactivate 方法以及您在视图中所说的任何地方 canDeactivate 如果您确实正在这样做。 canDeactivate 并不意味着在您的视图中,因为如果您正在执行此操作,它就不是计算出的 observable。路由器尝试离开时会调用 canDeactivate。
  • 您的 canDeactivate 方法为空?

标签: knockout.js durandal


【解决方案1】:

我已经解决了我的问题,问题子项是我的 default.html,已将我的脚本导入移动到我的应用程序主机(一个 durandal 演示片)下方,我的 canDeactivate 在收到错误返回时不再触发两次。

【讨论】:

    猜你喜欢
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    相关资源
    最近更新 更多