2013-09-07 4 views
0

Я попытался простой пример из учебника позвоночника и не может получить этот рабочийКак обновить модель по id в Backbone.js?

var Person = Backbone.Model.extend({}); 

var People = Backbone.Collection.extend({ 
    model: Person, 
    url: "http://localhost:3002/people" 
}); 

var people = new People(); 

var person = new Person({ 
    id: 3 
}); 

person.fetch({ 
    success: function() { 
     person.set({age: 23}); 
     person.save(); 
    } 
}); 

Я просто хочу, чтобы обновить существующую запись с ID равен 3, но есть свойство ошибки A «URL» или функция должна указывается. Я уверен, что я не ошибся при вводе этого примера, но он работает в учебнике и не работает для меня. Это из-за некоторых изменений версии?

+0

Можете ли вы разместить ссылку на упомянутый учебник? – nemesv

+0

Вы создаете модель за пределами коллекции, используя выборку. Таким образом, модель не связана с коллекцией. Вы должны либо использовать коллекцию для чтения/сохранения, либо для установки URL-адреса для модели. – cgTag

+0

Ваш человек не имеет никакого отношения к вашей коллекции в любом случае. Он не знает, что это за URL. – meagar

ответ

0

В результате ошибки и комментирования вам необходимо указать url или введите person модель people.

Если вы хотите, чтобы fetch ваша модель, используя те же самые url как коллекция people. Вам нужно добавить person к people коллекции, выполнив:

var people = new People(person); 

// or 

people.add(person); 

// The fetch url for a person would look like 
// GET http://localhost:3002/people/3  Assuming the id of the person is 3. 

Если вам нужно использовать другой url чем ваша коллекцию предписанный в технических заданиях person модели. Вы можете указать атрибут url или urlRoot в своей модели Person.

var Person = Backbone.Model.extend({ 
    urlRoot:'http://localhost:3002/person' 
}); 

// The fetch url for a person would look like 
// GET http://localhost:3002/person/3  The number will match id of model. 
Смежные вопросы