Backbone.js:单页应用程序,路由和hrefs问题

时间:2012-10-01 19:48:58

标签: backbone.js backbone-routing

听起来可能有点复杂。

这是SinglePage,pushState启用的应用程序。我有一条路线,用于配置:

    routes: {
        '': 'dashboard',
        'configure/sites/:id': 'configure',
        'configure/sites/:id/:section': 'configureSection'
    },

我正在使用tbranyen / backbone-boilerplate way来导航网址。如果我从仪表板a href="configure/sites/33单击某个href,则视图呈现正常。在浏览器URL中,我可以看到`localhost:12345 / configure / sites / 33'。

在配置视图中,我有一个菜单,里面有一些<a href=

<ul class="nav configure-nav">
<li>
    <a href="overview" class="overview">Overview</a>
</li>
<li>
    <a href="configuration" class="configuration">Configuration</a>
</li>

问题是,如果我尝试点击这些链接,id就会消失。

browser address bar

预计href:http://localhost:12345/configure/sites/33/configuration

实际href:http://localhost:12345/configure/sites/configuration

你能解释一下发生了什么以及如何解决它吗?

2 个答案:

答案 0 :(得分:0)

我不知道这是否能解决您的问题,但如果您正在制作单页应用,则应在“localhost:12345 /”之后添加一个hashbang,否则所有这些请求都将被发送到服务器。

答案 1 :(得分:0)

这是由于相对和绝对链接的工作方式。在你的情况下,hrefs是相对于路径中最近的“目录”(为了保持文件系统类比:id部分可以看作文件)。

如果向路径添加尾部斜杠,则概览和配置链接将正确生根。