我正在使用 backbone.js 来路由和绑定事件到DOM元素。事件触发器和JSON从服务器获取。
通常,单击某个项目会向项目的id
属性发送POST请求。
但是,我希望网址中的哈希显示#item_name
而不是#id
如果用户点击后退按钮或直接访问页面,我只有#item_name
,有没有办法避免在这种情况下进行双重查询。 (首先查询项目ID然后查询实际查询)
如果不是,这会显着影响直接链接页面加载的性能吗?
答案 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属性。