2

我正在尝试将backbone.js 路由器与多页应用程序一起使用。路由器可以正常使用默认路由,即本地主机,例如"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 })

因此问题。

4

3 回答 3

2

从骨干文档:

如果您的应用程序不是从您的域的根 url / 提供的,请务必告诉 History 根的真正位置,作为一个选项:Backbone.history.start({pushState: true, root: "/public/search/ "})

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

Backbone.history.start({ 
    root: "/customer/index/"
})
于 2013-09-16T14:43:20.530 回答
0

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

var app_router = new Router();

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

Backbone.history.start();

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

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

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

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

于 2013-09-16T14:44:23.943 回答
0

您需要定义根路径,即:

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

请参阅文档:http ://backbonejs.org/#Router

于 2013-09-16T14:44:37.747 回答