1

我正在尝试在 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
    });

});
4

1 回答 1

1

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

var Router = Backbone.Router.extend({

    routes: {
        'work(/:section)': 'showPortfolio'
    },

    showPortfolio: function(section){
        alert('Show Portfolio ' + section);
    }
});

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

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

于 2013-07-15T06:37:36.507 回答