2012-01-07 23 views
6

Pracuję nad aplikacją szkieletową, która sprawia, że ​​prośba o crossdomeny jest spokojna. Zagnieżdżona struktura danych na żądanie są zobowiązani, we wniosku curl mam tę strukturę:Model szkieletowy: struktura danych zagnieżdżonych

{ 
    "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" 
     } 
    } 
} 

w modelu nie mam zagnieżdżone struktury i jest to bardzo wygodne, ponieważ używam image modelu pola w view (DOM tworzenie elementu).

Jaki jest poprawny sposób wysyłania zagnieżdżonych danych do serwera z aplikacji Szkielet?

Model:

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: '' 
    }, 
}); 

Część widzenia, które wykorzystują image modelu właściwość:

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}); 
    }); 
}, 

strony innego widoku, które wysyłają dane do serwera.

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(); 
} 

Odpowiedz

1

pierwszy parametr przekazać w save jest hash z atrybutów, które będą przekazywane wraz z Twojego uratować.

W swojej funkcji sendTo wystarczy zbudować obiekt z danymi z modelu i dowolnymi dodatkowymi wartościami formularza w sposób oczekiwany przez serwer. Domyślnie po pomyślnym zapisaniu dane z odpowiedzi będą przekazywane za pomocą metody analizy składni i ponownie ustawione na modelu.

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

this.model.save(myData); 
+0

Dobre rozwiązanie! W tym czasie zostały przetworzone dane po stronie serwera. – I159

Powiązane problemy