我定义了以下路由器,但.route
似乎没有设置该功能。我究竟做错了什么?在此先感谢您的帮助。
# app.js.coffee
initialize: =>
router = new Backbone.Router
router.route "foo/:bar", "baz"
console.log router.routes # returns undefined
我定义了以下路由器,但.route
似乎没有设置该功能。我究竟做错了什么?在此先感谢您的帮助。
# app.js.coffee
initialize: =>
router = new Backbone.Router
router.route "foo/:bar", "baz"
console.log router.routes # returns undefined
您使用创建的路由Router.route
内部存储在History
对象中——它们不会添加到Router.routes
集合中。
但是它们仍然有效,请参见此处以获取证据。请注意,在 中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"