2011-11-29 114 views
0

我使用backbone.js將事件路由並綁定到DOM元素。觸發事件並從服務器獲取JSON。哈希標籤雙查詢?

通常,點擊一個項目將發送一個POST請求到該項目的id屬性的服務器。

不過,我想在URL中的散列顯示#item_name代替#id

如果用戶點擊後退按鈕或直接訪問該頁面,我只會有#item_name,有沒有辦法避免在這種情況下做一個雙重查詢。 (首先查詢物品ID,然後查詢實際查詢)

如果不這樣做會不會顯着影響直接鏈接頁面加載的性能?

回答

0

如果你喜歡這個工作,你的item_name必須在數據庫中是唯一的。所以它已經是一種身份證。在Backbone中,您可以設置應該用作每個模型的項目ID的屬性。

Backbone.Model.prototype.idAttribute = 'some_model_property'; 

你的情況,你就必須調用是這樣的:如果你現在使用的是像負荷模型功能

Item.Model.prototype.idAttribute = 'item_name'; 

()或保存()骨幹,是要建立項目網址與item_name而不是id。

POST to /item/item_name 
GET /item/item_name 

除了您現在可以通過他們的ITEM_NAMES獲取從集合這些模型:

var model = myCollection.get(item_name); 

唯一的問題是,你只能有一個模型id屬性。所以你將失去使用實際ID作爲這些模型的id屬性的能力。

+0

贊,謝謝!我認爲我會做所有的雙重調用,因爲當我做.navigate()時,它將使用#id進行調用。謝謝! – michael