1

我有三个这样的路线:

var appRouter = Backbone.Router.extend({
    routes: {
        "": "index",
        "questionnaire/info/id/:id": "questionnaireInfo",
        "questions/edit/*params": "questionEdit"
    },
    questionnaireInfo: function(id) {
        $('#app-body').load('/dashboard/questionnaire/info/id/' + id);
    },
    questionEdit: function(questionnaireId) {
        console.log(questionnaireId, params);
    },
    index: function() {
        console.log('index');
    }
});

我像这样初始化它们:

var appRouting = new appRouter;
Backbone.history.start({
    pushState: true,
    silent: false,
    root: '/dashboard/'
});

在第一页加载路由匹配,它甚至 console.log 正确的消息。但我有一个这样的链接元素:

<a href="/dashboard">Home Page</a>

""它与路线不匹配。"questionnaire/info/id/:id"而且这个 href 元素与路由不匹配:

<a href="/dashboard/questionnaire/info/id/1">Load</a>

我怎样才能使它工作?谢谢。

4

4 回答 4

0

指数触发了吗?一般来说,骨干文档建议从最具体到最不具体列出您的路线。其他根可能没有被调用,因为它"":"index"捕获了所有内容。

于 2012-07-20T13:38:22.460 回答
0

也许你错过了 '/dashboard' 和每条路线之间的 '/'

于 2012-07-20T11:11:15.003 回答
0

我有同样的问题。似乎调用路由的链接必须以“#”字符开头。所以如果路由器的根是

/dashboard/

你的路线是

"questionnaire/info/id/:id": "questionnaireInfo"

比触发路由的链接应该是例如

<a href="/dashboard/#/questionnaire/info/id/1">Load</a>

希望这可以帮助。

于 2013-06-03T17:55:48.060 回答
0

Backbone.history.start您需要在参数调用中使用斜杠root

var appRouting = new appRouter;
Backbone.history.start({
    pushState: true,
    silent: false,
    root: '/dashboard/'
});

您可以在文档中的示例Backbone.history中看到这一点。

于 2012-07-20T15:05:00.990 回答