Как я могу получить определенную строку из 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();
Если вы хотите получить модель из коллекции на основе атрибута модели, вы можете использовать где:
collection.where({username: "user1"});
См. Документацию здесь: Коллекция, где
Редактировать:
Если вы всегда выбираете свои модели на основе имени пользователя или атрибута электронной почты, вы можете сделать его idAttribute, а затем использовать имя пользователя в качестве своего идентификатора, если оно уникально:
В модели:
idAttribute: "username"
а затем получить модель из коллекции на основе этого:
collection.get("user1");
EDIT2:
Ищите findWhere в документах, если вы хотите вернуть только одну модель (первую найденную) из своей коллекции, вы должны быть уверены, что искомый атрибут уникален:
collection.findWhere({username: "user1"});
to fetch a special model from the server based on the username
?
get the model from the local collection you already fetched, based on the username
- возможно ли это?