【问题标题】:backbone router several root, how to load this properly?骨干路由器几个root,如何正确加载这个?
【发布时间】:2015-11-23 18:46:52
【问题描述】:

我在这里遗漏了一些东西。我认为我的问题很简单。 mysite.com/app 和 mysite.com/transaction 都加载不同的 html 页面,但它们加载相同的路由器。

对于每种情况,我都需要按照以下顺序编写路由器 mysite.com/app/#/someparams 触发 'app' 功能 mysite.com/transaction/#/someparams 触发“交易”功能。 (有无#我不在乎,但这对我来说是这样的=/)

如果我写:

routes: {
    'app':'app',
    'app/:params':'app',
    'transaction':'transaction',
    'transaction/:params': 'transaction'
}

Backbone.history.start({
    pushState: true 
});

然后 mysite.com/app/#/params 或 mysite.com/transaction/#/params 不会触发想要的功能。

如果我这样写:

     Backbone.history.start({
        pushState: false,
        root:'/app'
    });

那么参数对于 /app 是可以的,但对于 /transaction 是不行的。该怎么办 ?我很确定我错过了一些简单的东西,但我现在有点困惑..

感谢您的帮助

【问题讨论】:

    标签: javascript backbone.js router backbone-routing


    【解决方案1】:

    您的路线在您定义的两条路线中只需要一个参数。

    mysite.com/app/#/params 匹配 app/:params # 在此处作为参数传入。

    哈希也应该在路由图之前。

    mysite.com#app/params 根据您的地图,这将与骨干网预期的路线相匹配。

    您可以使用可选功能只使用 2 条路线。

    routes: {
        'app(/:params)':'app',
        'transaction(/:params)':'transaction'
    }
    

    【讨论】:

    • true 但随后加载了错误的 html。 mysite.com => 登陆,mysite.com/app => 应用,mysite.com/transaction => 交易...知道如何安排这个吗?
    • 你的意思是 app(/*) ?否则会触发正则表达式错误,但是当我使用 app(/*) 时,我的参数未通过 ... app:fucntion(params) { ... 当我尝试 app/#/wtv 时给我空参数
    • 看来我有同样的问题:github.com/jashkenas/backbone/issues/810,所以基本上我必须将 /app 和 /transaction 指向相同的根目录,例如 /tool/#/app & tool/ #/transaction 你怎么看?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多