Почему я не могу получить запрос на обновление в model.save
? Я всегда получаю запрос на создание.
Посмотреть,
define([
// load the dependencies
], function(App, $, _, Backbone, Handlebars, ProjectModel, ProjectCollection){
var updateFormView = Backbone.View.extend({
el: 'div.abPanel',
initialize: function () {
$(this.el).undelegate('form#frmAddContact', 'submit'),
_.bindAll(this, 'updateContactPage', 'updateContact');
},
events: {
'submit form#frmAddContact': 'updateContact'
},
updateContactPage: function (id) {
// load the data into the update form
},
updateContact: function (event) {
var contactmodel = new ProjectModel({
form: $('#frmAddContact', this.$el)
});
contactmodel.save();
return false;
}
});
return updateFormView;
});
Модель,
var ProjectModel = Backbone.Model.extend({
sync: function (method, model, options) {
console.log(method); // Why I always get create method??
// other stuff
}
});
return ProjectModel;
});
В базовом документе,
обратите внимание, как наша переопределенная версия Backbone.sync получает запрос "создать" при первом сохранении модели и повторном запросе "обновления".
second time
? Я не понимаю - зачем нам во second time
получать "обновления"? Не могу ли я получить данные конкретной модели из коллекции, отредактировать ее и обновить?
РЕДАКТИРОВАТЬ:
updateContactPage: function (id) {
var contact = {};
var model;
if(App.contactCollection !== undefined)
model = App.contactCollection.get(id); // I have called the model first time right???
if (id !== undefined && model !== undefined) {
console.log(model); // And I get the requested model displayed on my form.
contact = model.toJSON();
}
this.$el.html(Handlebars.getTemplate('add')({contact: contact}));
},
Чтобы получить запрос на update
, мне нужно только установить/отправить идентификатор модели,
updateContact: function (event) {
var contactmodel = new ProjectModel({
id:38, // set an id here for updating
form: $('#frmAddContact', this.$el)
});
contactmodel.save();
return false;
}
id
для рассматриваемой моделиBackbone.Model
?