Базовая модель: вложенная структура данных - PullRequest
6 голосов
/ 07 января 2012

Я занимаюсь разработкой магистрального приложения, которое делает междоменный запрос спокойным.Вложенная структура данных в запросе требуется, в запросе curl у меня есть такая структура:

{
    "site_id": 1,
    "post": {
        "site_id": 1,
        "provider_id": 1,
        "provider_post_id":1,
        "created_ts": "12.12.12",
        "post": {
            "header": "text",
            "caption": "text",
            "image": "http://...jpg"
        }
    }
}

В модели у меня нет вложенной структуры, и это довольно удобно, потому что я использую поле модели imageview (создание элемента DOM).

Какой правильный способ отправки вложенных данных на сервер из приложения Backbone?

Модель:

var WraperModel = Backbone.Model.extend({
    url: 'http://mydomain/core/api/v1/bookmarklet_post/?  callback=?',
    defaults: {
        site_id: 1, // shouldn't be hardcoded
        type:"type", site_id:2, provider_id: 2, provider_post_id: 2,  created_ts:2,
        header : '',
        caption: '',
        image: ''
    },
});

Часть представления, в которой используется image свойство модели:

drawItem: function (model) {
    var inst = new ImageView({model: model, tagName: 'li',     className:'images-item'}).render();
    this.imagesWrapper.append(inst.el);
},
getImages: function () {
   var images = doc.getElementsByTagName('img'),
       view = this;
   _.each(images, function (image) {
       image.offsetHeight > 75 
       && image.offsetWidth > 75 &&
       view.collection.add({image: image.src});
   });
},

Часть представления, которая отправляет данные на сервер.

sendTo: function(){
    var that = this,
    data = {saving: true};

    $('#add-header').val() && (data.header = $('#add-header').val());
    $('#add-description').val() && (data.caption = $('#add-description').val());
    this.model.set(data);
    this.model.save();
}

1 Ответ

1 голос
/ 13 марта 2012

первый параметр, который вы передаете save - это хэш атрибутов, которые будут переданы в вашем сохранении.

В вашей функции sendTo просто создайте объект с данными изваша модель и любые дополнительные значения формы так, как этого ожидает сервер.По умолчанию при успешном сохранении данные из ответа будут переданы через метод синтаксического анализа и возвращены в модель.

var myData = {
     //create nested object for the server
};

this.model.save(myData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...