我有三条这样的路线:
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>
它与""
路线不匹配。并且此href元素与"questionnaire/info/id/:id"
路由不匹配:
<a href="/dashboard/questionnaire/info/id/1">Load</a>
我怎样才能使这个工作?感谢。
答案 0 :(得分:0)
也许你错过了'/ dashboard'和每条路线之间的'/'
答案 1 :(得分:0)
指数解雇?通常,骨干文档建议列出从最具体到最不具体的路线。可能没有调用其他根,因为"":"index"
捕获了所有内容。
答案 2 :(得分:0)
在Backbone.history.start
调用root
参数时,您需要一个尾部斜杠。
var appRouting = new appRouter;
Backbone.history.start({
pushState: true,
silent: false,
root: '/dashboard/'
});
您可以在文档中的example for Backbone.history
中看到这一点。
答案 3 :(得分:0)
我遇到了同样的问题。似乎调用路由的链接必须以“#”字符作为前缀。所以如果路由器的根目录是
/dashboard/
,您的路线是
"questionnaire/info/id/:id": "questionnaireInfo"
比触发路线的链接应该是例如
<a href="/dashboard/#/questionnaire/info/id/1">Load</a>
希望这有帮助。