2011-11-29 72 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