如何从backbone.collection
而不是username
获取id
中的特定行?
我认为最常见的情况,
site.come/#edit_contact/5
但我需要通过用户名/电子邮件或代码从集合中获取该项目,
site.come/#edit_contact/user1
site.come/#edit_contact/lau@xxx.com
site.come/#edit_contact/T1X0A7
骨干ID,
model = AB.contactscollection.get(id);
理想地,
model = AB.contactscollection.get(username);
有可能吗?
注意:
我正在使用本教程中的代码进行测试,
http://amitgharat.wordpress.com/2012/06/23/writing-your-first-application-using-backbone-js/
修改
var contact = {},
//model = AB.contactscollection.get(id);
model = AB.contactscollection.where({email: "lau@xxxx.com"})
if (id !== undefined && model !== undefined) {
contact = model.toJSON();
}
this.$el.html(this.template({contact: contact}));
错误消息,
TypeError:model.toJSON不是函数
contact = model.toJSON();
答案 0 :(得分:1)
如果您想根据模型属性从集合中获取模型,可以使用以下位置:
collection.where({username: "user1"});
请参阅此处的文档:Collection where
编辑:
如果您始终根据用户名或电子邮件属性选择模型,则可以将其设为idAttribute,然后使用用户名作为您的ID,如果它是唯一的:
在模型中:
idAttribute: "username"
然后根据以下内容从集合中获取模型:
collection.get("user1");
EDIT2:
如果您只想从集合中返回一个模型(找到的第一个模型),请在文档中查找findWhere,您应该确定要搜索的属性是唯一的:
collection.findWhere({username: "user1"});