0

Я бегу этот код в позвоночнике, которая сохраняет некоторые данные на сервер,model.save - экономит на сервер только один раз

GroupModalHeaderView.prototype.save = function(e) { 
    var $collection, $this; 
    if (e) { 
    e.preventDefault(); 
    } 

    $this = this; 
    if (this.$("#group-name").val() !== "") { 
    $collection = this.collection; 
    if (this.model.isNew()) { 
     console.log("MODEL IS NEW"); 
     this.collection.add(this.model); 
    } 
    return this.model.save({ name: this.$("#group-name").val()}, { 
     async: false, 
     wait: true, 
     success: function() { 
     //console.log($this, "THIS"); 
     console.log('Successfully saved!'); 
     this.contentView = new app.GroupModalContentView({ 
      model: $this.model, 
      collection: $this.collection, 
      parent: this 
     }); 
     this.contentView.render(); 
     return $this.cancel(); 
     }, 

    }); 
    } 
}; 

Это прекрасно работает в первый раз, когда я запустить его, но если я запускаю его снова сразу после сохранения моей первой части данных она не сохраняет новые данные, она просто обновляет последние сохраненные данные. Поэтому в первый раз, когда я его сохраняю, он запускает запрос POST, и в следующий раз, когда он запускает запрос PUT, почему это будет?

Я не уверен, если вам это нужно, но вот моя Initialise функция -

GroupModalHeaderView.prototype.initialize = function() { 
    _.bindAll(this) 
} 

ответ

1

У вашего вида есть прикрепленный к нему объект модели. Насколько я понимаю, вы заполняете некоторые формы, ставите свои данные в модель и сохраняете модель. Но все время у вас есть единственный объект модели, и вы только обновляете его данные. Если вы хотите создать новый объект после сохранения модели просто добавьте строку:

this.model = new YourModelClass(); 

сразу после строки console.log («! Успешно сохранено»);

0

От магистральной документации:

Если модель isNew, сохранение будет «создавать» (HTTP POST), если модель уже существует на сервере, сохранение будет «обновлением» (HTTP PUT).

Если вы хотите сделать запрос на запись, даже если модель является новой, просто переопределить сохранения по умолчанию реализации и вызовите (метод, модель, [опции]) с «создать» в качестве переданного метода Backbone.sync.