Магистраль: Как получить конкретную строку из коллекции по имени пользователя, а не по идентификатору?

0

Как я могу получить определенную строку из backbone.collection по username а не по id?

Я думаю, что самый распространенный случай,

site.come/#edit_contact/5

Но мне нужно получить элемент из коллекции по имени пользователя/электронной почте или коду,

site.come/#edit_contact/user1
site.come/#edit_contact/[email protected]
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: "[email protected]"})
    if (id !== undefined && model !== undefined) {

        contact = model.toJSON();
    }
    this.$el.html(this.template({contact: contact}));

сообщение об ошибке,

TypeError: model.toJSON не является функцией

contact = model.toJSON();

  • 1
    Вы хотите получить специальную модель с сервера на основе имени пользователя или же хотите получить модель из локальной коллекции, которую вы уже выбрали, на основе имени пользователя?
  • 0
    Да, я хочу get the model from the local collection you already fetched, based on the username - возможно ли это?
Теги:
backbone.js
jquery-1.9

1 ответ

1
Лучший ответ

Если вы хотите получить модель из коллекции на основе атрибута модели, вы можете использовать где:

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

См. Документацию здесь: Коллекция, где

Редактировать:

Если вы всегда выбираете свои модели на основе имени пользователя или атрибута электронной почты, вы можете сделать его idAttribute, а затем использовать имя пользователя в качестве своего идентификатора, если оно уникально:

В модели:

idAttribute: "username"

а затем получить модель из коллекции на основе этого:

collection.get("user1");

EDIT2:

Ищите findWhere в документах, если вы хотите вернуть только одну модель (первую найденную) из своей коллекции, вы должны быть уверены, что искомый атрибут уникален:

collection.findWhere({username: "user1"});
  • 0
    большое спасибо!. А что если в этом сценарии мне нужно to fetch a special model from the server based on the username ?
  • 1
    Вы могли бы реализовать это как поиск site.come / # edit_contact /? username = name1 и в магистрали collection.fetch ({data: {username: "name1"}});
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню