2013-12-21 72 views
0

爲什麼無法在model.save中獲取更新請求?我總是得到創建請求。backbonejs 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; 
}); 

在骨幹doc

通知我們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})); 

     }, 
+2

你設置的一個'id'屬性有問題的Backbone.Model? – fbynite

+0

是的,我有。請看看我上面的編輯。我第一次在集合中調用模型。除非我理解錯第一次和第二次意味着骨幹? – laukok

+1

第一次被翻譯成一個'PUT'請求(即''保存'一個沒有'id'屬性的模型]。第二次被轉換成一個'POST'請求(也就是說,你保存一個具有'id'屬性的模型)。總之'App.contactCollection.get(id)!=(第一次||第二次)'。 – fbynite

回答

0

要獲得update要求,我只需要設置/發送一個ID,型號,

updateContact: function (event) { 

      var contactmodel = new ProjectModel({ 
       id:38, // set an id here for updating 
       form: $('#frmAddContact', this.$el) 
      }); 

      contactmodel.save(); 
      return false; 
     }