2012-01-07 15 views
6

私はクロスドメインの安らかな要求を行うバックボーンアプリを開発しています。私はview(DOMでimageモデルフィールドを使用しているため、私は構造を入れ子にしていないと、これはかなり快適であるモデルでバックボーンモデル:ネストされたデータ構造

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

:リクエスト内のネストされたデータ構造はカールの要求で、私はその構造を持っている、要求されています要素の作成)。

ネストされたデータを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

あなたはsaveに渡す最初のパラメータは、あなたの節約に沿って渡すことしようとしている属性のハッシュです。

sendToの関数では、モデルのデータと追加のフォーム値をサーバーに想定した形でオブジェクトを作成するだけです。デフォルトでは、保存が成功すると、レスポンスのデータは解析メソッドを通過し、モデルに戻されます。

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

this.model.save(myData); 
+0

良い解決策!私はこの時点でサーバー側のデータを処理しました。 – I159

関連する問題