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