backbonejs model.save的创建或更新 - 无法获取更新请求

时间:2013-12-21 08:18:19

标签: jquery backbone.js requirejs

为什么我无法在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}));

        },

1 个答案:

答案 0 :(得分: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;
        }