4

有人可以解释为什么当用户单击 Durandal 的链接(导航)时,转换(至少是默认的入口)没有立即开始吗?

换句话说,我们是否需要两种机制(加载器动画 + 过渡)来指示正在执行的操作(例如,激活方法中的 ajax 调用)。

我确定有充分的理由,或者我只需要修改入口过渡?

4

2 回答 2

2

似乎一旦激活函数解决,Durandal 的转换就会运行。我问了一个类似的问题,我列举了一些我发现的特别适合我的情况的可能解决方案:

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

希望这会有所帮助。

于 2013-06-24T17:28:58.120 回答
1

如果您没有压缩整个应用程序,那么第一个过程将是 requirejs 下载下一个 amd 模块,然后下载相应的视图。

下一步是 durandal 在您的模块上调用激活。如果它返回一个Deferred则激活,然后它将等待 deferred 完成。

一旦激活完成,就会调用转换。过渡负责将旧视图换成新视图。

所以,如果它需要一段时间才能开始转换,可能是因为它在下载模块和视图方面滞后......或者你的激活方法需要一些时间才能完成。

于 2013-06-10T19:24:14.967 回答