2015-04-05 123 views
0

我有一個Backbone js應用程序,當我轉到URL domain.com/item/1或domain/item/2等時運行。當應用程序啓動時,我創建了一個新的我的模型實例並將其傳遞給需要的id成爲網址的最後一部分。有沒有辦法在Backbone中訪問它?主幹獲取URL參數

我知道很容易構建一個可以在哈希後訪問參數的路由器,所以我更好地將我的URL更改爲類似domain.com/item/1#1的東西?

回答

1

我不知道你有一個骨幹路由器或不是。但這很容易實現的基本使用Backbone.router之一。 ,您不必使用#或任何東西。您可以在斜線之間訪問任何內容。

routes: { 
    "item/:page": function(page){ 
     //page holds the query parameter. 
    } 
} 

你的路由器上的路由與函數的參數哈希映射的URL(或只是直接的函數定義,如果你願意),類似於查看的事件哈希值。路由可以包含參數部分:param,它與斜槓之間的單個URL組件匹配;和splat parts * splat,它可以匹配任意數量的URL組件。部分路徑可以通過將其放在括號中(/:可選)來使其成爲可選項。

有關詳細信息,請參閱文檔中的Backbone.router部分。

http://backbonejs.org/#Router

僅供參考,查詢參數傳遞給你的模型不應該當用戶啓動應用程序,但時候routes是要更改頁面called.otherwise每次,您需要更改URL並重新加載整個執行頁。

,通常控制器使模型實例,這意味着,你最好在router創建參數控制器實例,然後在這樣的

routes: { 
    "item/:page": function(page){ 
     var page = new YourNameSpace.Controller.Foo({pageId : page}); 
     page.render(); 
    } 
} 

//inside of Itempage Controller 
initialize : function(){ 
    this.model = new YourNameSpace.Model.Foo({pageId : this.pageId}); 
} 
的controller.something創建一個模型