2012-12-12 77 views
0

我有以下路由器定義,但.route函數似乎沒有設置。我究竟做錯了什麼?先謝謝您的幫助。骨幹router.route不設置路由

# app.js.coffee 

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

回答

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" 
+0

感謝澄清,dbaseman 。你對他們的內部存儲是正確的 - 我對此並不清楚。不過,對於未來的觀衆來說,看起來它們存儲在handlers屬性的Backbone.history對象中。很高興知道! – createbang

+0

@ mlp.brooklyn是的,很好的關於Backbone.history的知識。我已經修復了我的答案。 – McGarnagle