Backbone router.route没有设置路由

时间:2012-12-12 20:28:05

标签: backbone.js

我定义了以下路由器,但.route功能似乎没有设置。我究竟做错了什么?提前谢谢你的帮助。

# app.js.coffee

initialize: =>
  router = new Backbone.Router
  router.route "foo/:bar", "baz"
  console.log router.routes # returns undefined

1 个答案:

答案 0 :(得分:3)

您使用Router.route创建的路线存储在History对象内部 - 它们未添加到Router.routes集合中。

他们仍然有效,请参阅here以获取证据。请注意,在this.routes中,只定义了home路由,但您仍然可以点击baz路由。如果您选中实际存储路线的baz可以看到Backbone.history.handlers路线。

var Router = Backbone.Router.extend({
    initialize: function() {
        this.route("foo/:bar", "baz");
    },
    routes: {
        "": "home"  
    },
    home: function() {
        console.log("home hit");
    },
    baz: function(bar) {
        console.log('test hit: ' + bar);
    },
});
var router = new Router();
console.log(this.routes);
console.log(Backbone.history.handlers);
Backbone.history.start();
router.navigate("foo/testbar", { trigger: true });   

<小时/>

但请注意,我认为您需要在代码中使用this,因为router中尚未定义initialize

@route "foo/:bar", "baz"