hashtag双查询?

时间:2011-11-29 05:21:32

标签: javascript dom backbone.js hashtag

我正在使用 backbone.js 来路由和绑定事件到DOM元素。事件触发器和JSON从服务器获取。

通常,单击某个项目会向项目的id属性发送POST请求。

但是,我希望网址中的哈希显示#item_name而不是#id

如果用户点击后退按钮或直接访问页面,我只有#item_name,有没有办法避免在这种情况下进行双重查询。 (首先查询项目ID然后查询实际查询)

如果不是,这会显着影响直接链接页面加载的性能吗?

1 个答案:

答案 0 :(得分:0)

如果你喜欢这个,你的item_name必须在数据库中是唯一的。所以它已经是一种身份。在Backbone中,您可以设置应该用作每个模型的项目ID的属性。

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

在你的情况下,你必须打电话给:

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

如果您现在使用的模型函数如load()或save(),Backbone将使用item_name而不是id来构建项目URL。

POST to /item/item_name
GET /item/item_name

除此之外,您现在可以通过item_names从集合中获取这些模型:

var model = myCollection.get(item_name);

唯一的问题是您只能拥有一个模型的id属性。因此,您将无法使用实际id作为这些模型的id属性。