0

我定义了以下路由器,但.route似乎没有设置该功能。我究竟做错了什么?在此先感谢您的帮助。

# app.js.coffee

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

1 回答 1

3

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

但是它们仍然有效,请参见此处以获取证据。请注意,在 中this.routes,仅home定义了路线,但您仍然可以到达baz路线。如果您选中,您可以看到路线,这是路线实际存储的位置。bazBackbone.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 });   


​</p>

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

@route "foo/:bar", "baz"
于 2012-12-12T20:42:33.300 回答