2012-01-07 18 views
6

मैं रीढ़ एप्लिकेशन, जो crossdomain शोकहारा अनुरोध करता है विकसित कर रहा हूँ। अनुरोध में नेस्टेड डेटा संरचना के लिए आवश्यक हैं, कर्ल अनुरोध में मुझे लगता है कि संरचना है:रीढ़ मॉडल: नेस्टेड डेटा संरचना

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

मॉडल मैं संरचना से नहीं लगाए गए है और यह बहुत आरामदायक है, क्योंकि मैं view (डोम में image मॉडल फ़ील्ड का उपयोग तत्व निर्माण)।

क्या सही तरीका बैकबोन app से सर्वर से नेस्टेड डेटा भेजने के लिए?

मॉडल:

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

पहले पैरामीटर आप save में पारित विशेषताओं है कि जा रहे हैं की एक हैश अपने को बचाने में पारित किया जाना है।

अपने sendTo फ़ंक्शन में बस अपने मॉडल से डेटा के साथ एक ऑब्जेक्ट बनाएं और किसी भी अतिरिक्त फॉर्म वैल्यू को जिस तरह से सर्वर की अपेक्षा है। डिफ़ॉल्ट रूप से, जब एक को बचाने सफल हुआ प्रतिक्रिया से डेटा पार्स विधि के माध्यम से पारित कर दिया और मॉडल पर वापस निर्धारित किया जाएगा।

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

this.model.save(myData); 
+0

अच्छा समाधान! मैं सर्वर साइड पर डेटा संसाधित किया गया था, इस बार में। – I159

संबंधित मुद्दे