2012-01-07 105 views
6

我开发骨干的应用程序,这使得跨域宁静的请求。在请求中的嵌套数据结构是必需的,在袅袅的请求我有一个结构:骨干型号:嵌套数据结构

{ 
    "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(DOM使用image示范田元素创建)。

什么嵌套数据从骨干应用程序发送到服务器的正确方法是什么?

型号:

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 2012-03-15 10:47:15