Выборка в базовой модели с идентификатором
У меня есть список элементов, и нажатие на них должно привести к деталям пользователя (другое представление).
В моем маршрутизаторе у меня есть такой маршрут для этого:
'details/:id' : 'details',
Теперь, в деталях, функция должна получить мой объект (Fetching вызовет визуализацию нового представления).
Но что я должен делать, чтобы базовая единица привязывала id элемента к model.url?
Теперь у меня есть два способа:
Создайте URL-адрес на лету при выборе:
this.realty_object.fetch({url: SITE_PATH + 'blah/blah/' + id});
И что-то вроде этого:
this.realty_object
.set({id : id}, {silent: true})
.fetch();
Но я сомневаюсь, что это правильные решения. Как это должно быть? В чем разница между model.urlRoot и model.url().
Ответы
Ответ 1
Правильный ответ заключается в использовании свойства urlRoot модели. Если он настроен, идентификатор модели будет добавлен к этому URL при извлечении. Таким образом, это может выглядеть так (объекты имеют разные имена от того, что находится в моем первом сообщении, но идея одинакова - выбор одной модели по id):
Group = Backbone.Model.extend({
urlRoot: SITE_PATH + 'group/index',
});
И в пути:
this.group = new Group({id: id});
this.group.fetch();
Ответ 2
взгляните сюда,
он прекрасно объясняет, какое лучшее решение для получения отдельных моделей
вы использовали бы функцию для компоновки url, как свойство модели. используя .isNew()
по крайней мере, это то, как я это делал какое-то время, я считаю, что это лучше, чем создавать URL-адрес при получении каждый раз, когда вам что-то нужно.
Как получить одну модель в Backbone?