Backbone.js 主干中带斜线的路由
我正在尝试在Backbone.js中使用pushState路由 问题是,当我尝试使用在链接之间包含斜杠的路由时,不会调用router函数,控制台会显示错误:Backbone.js 主干中带斜线的路由,backbone.js,backbone-routing,Backbone.js,Backbone Routing,我正在尝试在Backbone.js中使用pushState路由 问题是,当我尝试使用在链接之间包含斜杠的路由时,不会调用router函数,控制台会显示错误: var Router = Backbone.Router.extend({ routes: { "work/mobileapps": "showPortfolio" }, showPortfolio: function(){ alert('Show Portfolio'); } 在这种情况下,
var Router = Backbone.Router.extend({
routes: {
"work/mobileapps": "showPortfolio"
},
showPortfolio: function(){
alert('Show Portfolio');
}
在这种情况下,永远不会调用showPortfolio函数。我也尝试过使用参数,比如:
var Router = Backbone.Router.extend({
routes: {
"work/:section": "showPortfolio"
},
showPortfolio: function(){
alert('Show Portfolio');
}
var Router = Backbone.Router.extend({
routes: {
"work-mobileapps": "showPortfolio"
},
showPortfolio: function(){
alert('Show Portfolio');
}
但问题仍然是一样的
但是,如果我将路线更改为以下内容:
var Router = Backbone.Router.extend({
routes: {
"work/:section": "showPortfolio"
},
showPortfolio: function(){
alert('Show Portfolio');
}
var Router = Backbone.Router.extend({
routes: {
"work-mobileapps": "showPortfolio"
},
showPortfolio: function(){
alert('Show Portfolio');
}
它开始工作了
看来斜杠有些问题。请帮助我,让我知道我犯了什么错误
谢谢
以下是完整的代码:
//Set variables according to production/development environment
var production = 0;
var rootpath = (production) ? "/" : "Websitev2/code";
//--------------------------------------------------------------
var Router = Backbone.Router.extend({
routes: {
"work/mobileapps": "showPortfolio",
"about": "showAbout",
"work": "showWork",
"": "showHome"
},
showPortfolio: function(){
alert('Show Portfolio');
//$("#work-content").empty();
},
showAbout: function () {
alert('Show About');
},
showWork: function () {
alert('Show Work');
},
});
$(document).ready(function () {
window.router = new Router();
Backbone.history.start({
pushState: true,
root: rootpath
});
});
以我有限的经验,您是否尝试过:
var Router = Backbone.Router.extend({
routes: {
'work(/:section)': 'showPortfolio'
},
showPortfolio: function(section){
alert('Show Portfolio ' + section);
}
});
如注释中所述,您需要使用散列引用路由:
http://localhost/Websitev2/code/#work/mobileapps
以我有限的经验,您是否尝试过:
var Router = Backbone.Router.extend({
routes: {
'work(/:section)': 'showPortfolio'
},
showPortfolio: function(section){
alert('Show Portfolio ' + section);
}
});
如注释中所述,您需要使用散列引用路由:
http://localhost/Websitev2/code/#work/mobileapps
您能否发布完整的代码,因为这是您使用路线的方式,您的代码中一定有其他问题。您是否使用#work/mobileapps
访问路线?我已经测试了你的代码,它工作得很好…这不是路由的工作方式。它正在那里寻找一个域目录。您需要使用http://localhost/Websitev2/code/#work/mobileapps
我已经更新了答案,如果使用哈希解决了您的问题。请随意将其标记为正确。您是否可以发布完整的代码,因为这是您使用路由的方式,您的代码中一定存在其他问题。您是否使用#work/mobileapps
访问路由?我已经测试了你的代码,它工作得很好…这不是路由的工作方式。它正在那里寻找一个域目录。您需要使用http://localhost/Websitev2/code/#work/mobileapps
我已经更新了答案,如果使用哈希解决了您的问题。请随意将其标记为正确。