【问题标题】:F5 browser refresh does not reload the current route in durandaljsF5 浏览器刷新不会重新加载 durandaljs 中的当前路由
【发布时间】:2013-10-08 03:38:00
【问题描述】:

我在谷歌浏览器的这个网址上:

http://mysite:7466/#lessonplanner

然后我按 F5 刷新/重新加载当前站点,但内容没有重新显示。我看到一个空白页。

在控制台中我看到:找不到路由

我的路线是这样设置的:

 router.map([
{ route: 'lessonplanner', moduleId: 'viewmodels/lessonplanner', title: 'lesson planner', nav: true }])
                 .buildNavigationModel();

我做错了什么?

【问题讨论】:

  • 很难说。我猜该路线是在您直接加载#lessonplaner 时未命中的地方定义的。尝试将其向上移动。
  • 你是对的,这条路线 #lessonplanner 仅在该课程计划者所属的位置之前加载学年记录时才加载...点击 F5 正在执行整个 shell.js 并且表现得像学年从来没有之前加载因此'找不到路线'......你现在有什么建议?嗯,实际上用户希望只重新加载课程计划器,这意味着我必须将加载的 schoolyearId 保存到 localStorage。好的,这是一个边缘情况,我稍后在登录时必须处理...感谢 Rainer 的提示。
  • 如果您正在使用 Durandal 构建单页应用程序,除非有非常好的理由,否则您可能不需要使用 F5 重新加载页面,但如果有的话我从未听说过...
  • @PW 卡德。当然有一个。深度链接,例如#/categoryId/productId 如果人们直接点击它应该会解决。所以在activate 中一定有一种方法可以根据categoryIdproductId 检索数据,因为此时这是您拥有的唯一信息。
  • @PWKad 你有技术观点。从用户的角度来看,F5 应该始终刷新网站。

标签: durandal durandal-navigation


【解决方案1】:

这是一个经典的例子,我将lessionplanner 拆分为一个模块,并将其包含在视图中,其中包含核心数据。 然后重新加载实际视图,如果链接正确,它将起作用。

【讨论】:

  • 我不确定我是否正确理解了您的答案。或者您是否理解我的场景,因为我的课程计划器已经是一个模块。我无法使用核心数据加载课程计划器,因为课程计划器与必须在之前加载的学年相关。实际上路线应该是这样的:localhost:80/schoolyear/09-13-2013/lessonplanner。但我仍然必须实现该深层链接。
猜你喜欢
  • 1970-01-01
  • 2010-10-18
  • 2020-02-21
  • 2019-08-26
  • 1970-01-01
  • 2018-10-16
  • 2020-05-08
  • 2014-01-18
  • 2021-09-27
相关资源
最近更新 更多