3

我有一个使用 DurandalJS 的 SPA 应用程序,效果很好。链接被路由,视图模型被激活,等等。

问题是,我有一个指向实际存在于服务器上的页面的锚点。我需要浏览器来实际查询这个页面(它是一个 asp.net MVC 页面)。

似乎 Durandal 中的路由器挂钩到所有相对的(或实际上在同一域上)链接,如果找不到路由,则调用路由器的 handleInvalidRoute 方法。

我一生都无法弄清楚如何告诉 Durandal 不要路由此 URL。我还需要保留中间/ ctrl+click 功能。

文档没有帮助,谷歌什么也没找到。我还尝试查看路由器/SammyJs 代码,但我看不到任何明显的东西。

这个问题似乎和我的一样,但答案对我不起作用。我的 URL 都是实际的 URL(没有哈希前缀),所以我不能关闭 PushState。

4

2 回答 2

3

到目前为止我发现的最简单的方法是创建一个绝对网址(例如http://myapp.com/whatever-that-is-not-a-sammy-route)并添加

target="_top"

到锚点。这允许新的选项卡行为(ctrl+单击、中键单击、打开新选项卡上下文菜单),当左键单击链接时,它会在当前窗口中打开,绕过 Sammy 路由!

于 2013-05-17T12:16:42.417 回答
1

不确定这是否有帮助,但我创建了一个名为 location.assign 的点击绑定。我使用了 PHP,但它应该仍然适合你。这是一个例子:

在视图中

<a data-bind="click: goToMyLink">Go</a>

在视图模型中

goToMyLink: function() {
    location.assign('myLink.php'):
}
于 2013-05-17T00:35:38.387 回答