backbone:如何通过用户名而不是id从集合中获取特定行?

时间:2013-11-29 09:38:59

标签: jquery backbone.js jquery-1.9

如何从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();

1 个答案:

答案 0 :(得分:1)

如果您想根据模型属性从集合中获取模型,可以使用以下位置:

collection.where({username: "user1"});

请参阅此处的文档:Collection where

编辑:

如果您始终根据用户名或电子邮件属性选择模型,则可以将其设为idAttribute,然后使用用户名作为您的ID,如果它是唯一的:

在模型中:

idAttribute: "username"

然后根据以下内容从集合中获取模型:

collection.get("user1");

EDIT2:

如果您只想从集合中返回一个模型(找到的第一个模型),请在文档中查找findWhere,您应该确定要搜索的属性是唯一的:

collection.findWhere({username: "user1"});