Сохранение базовой модели: отправка полей в качестве подобъекта модели

Модель пользователя

define(
  [
    'backbone'
  ],
  function (Backbone) {

    return Backbone.Model.extend({
      url: '/proxy.php/users.json',

      defaults: {
        'first_name': '',
        'last_name': '',
        'work_email': ''
      },

      validation: {
        first_name: {
          required: true,
          msg: 'Please enter a first name'
        },

        last_name: {
          required: true,
          msg: 'Please enter a last name'
        },

        work_email: {
          required: true,
          msg: 'Please enter a valid email'
        }
      }

    });
  }
);

Просмотр сохраненных данных

  onSave: function (ev) {

    ev.preventDefault()

    var details = $('.edit-user-form').serializeObject()
    var object = new User()

    return object.save(details, {
      success: function (response) {
        console.log(response, 'response')
      }
    })
  },

детали =

{first_name: "", last_name: "", birthdate: "", job_title: "", job_start_date: ""…}
birthdate: ""
first_name: ""
job_probation_ends: ""
job_start_date: ""
job_title: ""
last_name: ""
personal_address: ""
personal_email: ""
personal_phone_number: ""
work_address: ""
work_email: ""
work_phone_number: ""

Проблема в том, что запрос, отправленный Backbone, отправляет данные формы как:

model:{"first_name":"","last_name":"","work_email":"","birthdate":"","job_title":"","job_start_date":"","job_probation_ends":"","work_address":"","work_phone_number":"","personal_email":"","personal_address":"","personal_phone_number":""}

Почему он делает атрибуты подобъектом модели? Я хотел бы, чтобы атрибуты отправлялись как корень.


person azz0r    schedule 06.09.2013    source источник


Ответы (1)


Если вы хотите изменить структуру данных, отправляемых на сервер, переопределите метод toJSON для вашей модели:

toJSON: function () {
    return { // structure the model as you wish here };
}
person kinakuta    schedule 08.09.2013