添加新视图后,如何正确刷新Durandal SPA Web应用程序?

时间:2013-05-13 23:07:28

标签: single-page-application durandal

我刚开始玩Durandal,使用入门套件。我添加了一个非常简单的新视图/视图模型组合(基本上是样本中现有的一个的复制/粘贴)和mapNav()的路径。

当我尝试刷新浏览器时,问题就出现了...新视图根本没有出现。它不在导航栏中,也不能通过在地址栏中输入直接导航到视图。我知道代码是(或应该是?!)正确的,因为如果我在不同的浏览器中访问该页面,一切都会显示出来。

Durandal是否正在以某种方式进行某些浏览器缓存?有时F5或Ctrl + F5可以刷新,有时则不会。我也无法深入链接到特定的“页面”。即:

http://localhost:52625/#/newpage只给我一个空白

我错过了什么?

2 个答案:

答案 0 :(得分:5)

我在Chrome中使用的选项是打开开发人员工具并右键单击刷新按钮。 “Empty Cache and Hard Reload”有一个选项可以帮我解决这个问题。我不知道在IE中的等价物,但尝试这一点,看看它是否解决了你的问题。

enter image description here

答案 1 :(得分:3)

大多数浏览器都会缓存通过RequireJS返回的模块,这就是Durandal获取模块和查看模型的方式。

CTRL + F5没有帮助,因为它只是刷新初始页面 - 仍然使用javascript(RequireJS)请求所有模块,因此它们通常首先从缓存中提取。

我发现最好在浏览器的开发者工具中禁用缓存。这样做将确保直接从源而不是从缓存加载所有网络请求。

有关其他信息,请参阅此问题:Debugging when using require.js cache

另一个解决方案是配置RequireJS来设置其urlArgs属性:https://stackoverflow.com/a/8479953/91189

此解决方案可以正常运行,但至少在Chrome中更难调试,因为每次加载模块时断点都会丢失,因为从技术上讲,每次都会请求不同的文件。