【问题标题】:Routing with slashes in Backbone在 Backbone 中使用斜线进行路由
【发布时间】:2013-07-12 22:47:44
【问题描述】:

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

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

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');
}

它开始工作了。

所以斜线似乎有问题。请帮助并让我知道我犯了什么错误。

谢谢!

这是完整的代码:

//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
    });

});

【问题讨论】:

    标签: backbone.js backbone-routing


    【解决方案1】:

    根据我非常有限的经验,您是否尝试过:

    var Router = Backbone.Router.extend({
    
        routes: {
            'work(/:section)': 'showPortfolio'
        },
    
        showPortfolio: function(section){
            alert('Show Portfolio ' + section);
        }
    });
    

    如 cmets 中所述,您需要使用哈希引用路由:

    http://localhost/Websitev2/code/#work/mobileapps

    【讨论】:

    • 能否贴出你的完整代码,因为这是你使用路由的方式,你的代码中肯定有其他问题。
    • 你访问的是#work/mobileapps的路由吗?我已经测试了你的代码,它工作正常......
    • 路由不是这样工作的。它正在那里寻找域目录。你需要使用http://localhost/Websitev2/code/#work/mobileapps
    • 如果使用哈希解决了您的问题,我已经更新了答案。随意将其标记为正确。
    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    相关资源
    最近更新 更多