Создание или обновление backbonejs model.save - не удается получить запрос на обновление

0

Почему я не могу получить запрос на обновление в 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}));

        },
  • 2
    Вы устанавливаете атрибут id для рассматриваемой модели Backbone.Model ?
  • 0
    Да. пожалуйста, посмотрите на мое редактирование выше. Я назвал модель в коллекции впервые. Разве я не правильно понимаю, что первый и второй раз означают под позвоночником ???
Показать ещё 3 комментария
Теги:
requirejs
backbone.js

1 ответ

0

Чтобы получить запрос на update, мне нужно только установить/отправить идентификатор модели,

updateContact: function (event) {

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

            contactmodel.save();
            return false;
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню