gpt4 book ai didi

durandal - 在激活解决之前开始转换

转载 作者:行者123 更新时间:2023-12-03 17:52:33 25 4
gpt4 key购买 nike

有没有一种简单的方法可以使用 Durandal 的转换立即淡出旧 View ,并在其激活功能解决后淡入新 View ?

这里有一些上下文:

我有一个 Durandal 1.2 SPA,其中大多数 View 的激活功能都会进行服务调用并根据需要返回一个 promise 。这一切都很好,但只有在加载完成时才会运行转换,有时服务可能需要几秒钟才能响应 - 导致用户体验不佳,您单击链接并且需要几秒钟才能发生任何明显的事情。

解决方案是立即对旧 View 进行动画处理(在激活解析之前),然后在激活完成后在新 View 中进行动画处理。目前,每个动画 View 都对应一条路线,我不希望这会改变。我想出了并测试了一些可行的解决方案,但似乎不太理想(并且不利用 Durandal 的过渡框架):

  • 在其 deactivate() 中手动为每个 View 设置动画,并通过其 viewAttached()
  • 将其重新设置为动画
  • 将 .page-host div 的可见性绑定(bind)到 router.isNavigating(使用自定义绑定(bind)来处理转换,例如淘汰网站中的 fadeVisible 示例)
  • 手动订阅 router.isNavigating 并在更改时运行自定义逻辑

  • 我已经尝试了所有方法,到目前为止,我最喜欢 .page-host div 上的自定义绑定(bind),因为它涉及的代码量最少,但由于我的具体情况,它仅适用于我的情况,不是通用的解决方案。

    这似乎正是杜兰达尔的过渡所创造的那种东西。有没有更优雅的方式在 Durandal 中使用转换(在 1.2 或即将发布的 2.0 版本中)?

    我看到了 this question这似乎在问类似的问题,但似乎不太具体,并且没有相关的答案。

    最佳答案

    将您的异步逻辑移出激活并将其放入 viewAttached。这将允许 View 立即动画。然后,从 viewAttached 中,您可以安全地执行异步代码而不会破坏 KO,因为已经应用了绑定(bind)。 (注意:viewAttached 在 2.0 中重命名为 attachToParent。)

    关于durandal - 在激活解决之前开始转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17281313/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com