У меня есть пример настройки, чтобы показать мою проблему: http://jsfiddle.net/5xo4yzw2/1/Требуется модель Backbonejs Model.url?
var root = "http://jsonplaceholder.typicode.com"
var Post = Backbone.Model.extend({
url: function(){
return this.get('url') || root + "/posts/" + this.get('id')
}
});
var Posts = Backbone.Collection.extend({
model: Post,
url: root + "/posts"
});
var posts = new Posts();
posts.fetch();
console.log("Call to collection fetch works")
var post = new Post({id: 1});
post.fetch();
console.log("Call to collection fetch works")
Этот пример работает, то есть, оба console.logs выполняются без исключения воспитываются по .fetch()
. Это было мое понимание, однако, как от http://backbonejs.org/#Model-url, так и от книги, которую я читаю, что, как только я укажу "/posts"
как URL-адрес коллекции, URL-адрес модели должен быть автоматически разрешен до [collection.url]/[id]
, хотя это не так. Если я не предоставляю функцию url в модели, исключение возникает при извлечении, указывая, что должен быть указан параметр url.
Я что-то неправильно понял?
Итак, если мне нужна одна модель, мне нужна пустая коллекция, к которой я могу добавить ее, а затем выборку? Я полагаю, что это имеет смысл, хотя и не интуитивно понятно, что я получаю от – Eldamir
Нет, как отметил в своем ответе @Artem, вы можете использовать свойство urlroot для этого. – Jack
Просто для того, чтобы быть уверенным: коллекция ссылается на конечную точку моей restful службы, которая возвращает массив объектов (/ posts). Модель представляет собой представление одного объекта внутри этой коллекции. Я иногда хочу получить всю коллекцию, и иногда хочу получить только один из объектов. Должен ли я использовать urlRoot в этом случае? Мне кажется странным – Eldamir