Backbone.js 主干中带斜线的路由

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'); } 在这种情况下,

我正在尝试在Backbone.js中使用pushState路由

问题是,当我尝试使用在链接之间包含斜杠的路由时,不会调用router函数,控制台会显示错误:

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
我已经更新了答案,如果使用哈希解决了您的问题。请随意将其标记为正确。