您創建使用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