我定义了以下路由器,但.route
功能似乎没有设置。我究竟做错了什么?提前谢谢你的帮助。
# app.js.coffee
initialize: =>
router = new Backbone.Router
router.route "foo/:bar", "baz"
console.log router.routes # returns undefined
答案 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"