2012-02-20 18 views
4

Q可提供:

我應該改變我的href屬性是相對的,或者我應該定義與領先的斜線路線?
爲什麼骨幹文檔建議沒有領先斜線?)缺少龍頭骨幹航線斜線失敗,儘管文檔暗示相反

背景:

的骨幹文檔清晰建議如下:

注意,你要避免在您的路線定義中使用前導斜槓 ...

現在,我有一個測試定義了這些路線:

var Router = Backbone.Router.extend({ 
    routes: { 
    "index/": "logMe", 
    "/clients/": "logMe" 
    }, 

    logMe: function (page) { 
    console.log(page); 
    } 
}); 

調用上clickrouter.navigate($(this).attr('href'), {trigger: true});,路線被捕獲罰款/clients/而不是index。 (將前導/添加到索引路徑修復了此問題)。

我通過的href="…"字符串都是從域根開始(href="/index/" & href="/clients/")。

回答

1

傳入的「href」值是匹配到路由屬性名稱。如果您的「href」值以斜槓開頭,那麼您的路由屬性也必須如此。

請注意,在Backbone文檔中的所有示例中,片段值不以斜槓開始。

3

骨幹文檔建議避免使用前斜槓,因爲如果您使用pushState: true它們會中斷。

例如:

routes: { 
    "/clients/": "logMe" 
} 

給出http://example.com/#/clients/哈希URL,但http://example.com//clients/一個pushState的URL,這顯然是要失敗的。

使用的東西像前綴將!/工作:

routes: { 
    "!/clients/": "logMe" 
} 

這給分別http://example.com/#!/clients/http://example.com/!/clients/

另請注意,前導斜線不適用於router.navigaterouter.navigate('/clients/')被自動剝離,導致URL爲#clients/,而不是#/clients/

+0

感謝您的回答。這也是我的經歷。 – 2014-04-16 19:51:14