您创建使用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"
感谢澄清,dbaseman 。你对他们的内部存储是正确的 - 我对此并不清楚。不过,对于未来的观众来说,看起来它们存储在handlers属性的Backbone.history对象中。很高兴知道! – createbang
@ mlp.brooklyn是的,很好的关于Backbone.history的知识。我已经修复了我的答案。 – McGarnagle