【问题标题】:Backbone.js router with multiple page app?具有多页应用程序的 Backbone.js 路由器?
【发布时间】:2013-09-16 14:37:18
【问题描述】:

我正在尝试将主干.js 路由器与多页应用程序一起使用。 路由器可以正常使用默认路由,即 localhost,例如 "http://localhost:35970/" 或 www.myhompage.com" 但我想在具有以下路径的页面上使用骨干路由器:

"http://localhost:35970/customer/index"

让主干路由看起来像这样"

"http://localhost:35970/customer/index#create"

但它似乎不能以这种方式工作,我是否缺少任何东西让它在这样的路径上工作?

这是我的代码,谢谢:

 var Router = Backbone.Router.extend({

        routes: {
            "Contact/Create": "create"

        },
        create: function () {
            alert('router test');
        }
    });

//编辑

谢谢大家,这就是我所缺少的

root: "/customer/index/"

所以

Backbone.history.start({     pushState: true,     root: "/customer/index/" })

我在没有指定根路径不是默认路径的情况下启动了历史记录

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

因此问题。

【问题讨论】:

  • 来自主干.js 文档:“如果您的应用程序不是从您的域的根 url / 提供服务,请务必告诉历史根的真正位置,作为一个选项:Backbone.history.start({pushState: true, root: "/public/search/"})

标签: javascript backbone.js


【解决方案1】:

来自 Backbone 文档:

如果您的应用程序不是从您的根 url / 域,一定要告诉历史根的真正位置,作为 选项:Backbone.history.start({pushState: true, root: "/public/search/"})

所以你应该定义 url 的哪一部分是根。在你的情况下:

Backbone.history.start({ 
    root: "/customer/index/"
})

【讨论】:

  • 谢谢你的回答
【解决方案2】:

为了使用你的路由器,你需要创建一个新的对象,所以你可以尝试:

var app_router = new Router();

那么你必须启动它,所以这样做:

Backbone.history.start();

你现在应该可以去你的路线了。

骨干路由器是从路径到功能,所以在你的情况下,如果你去

http://localhost:35970/#Contact/Create

您应该会看到“路由器测试”

【讨论】:

  • 谢谢,我也错过了 root:'Customer/Create' Backbone.history.start({ root: "/customer/index/" })
【解决方案3】:

你需要定义根路径,即:

Backbone.history.start({
    pushState: true, 
    root: "/customer/index/"
})

参见文档:http://backbonejs.org/#Router

【讨论】:

  • 他并不真的需要 pushState,那会让事情变得复杂。
  • 谢谢你的回答
猜你喜欢
  • 2012-09-22
  • 2012-02-15
  • 1970-01-01
  • 2013-01-01
  • 1970-01-01
  • 2018-01-26
  • 2015-12-08
  • 2012-02-19
  • 2011-09-07
相关资源
最近更新 更多