2013-05-29 16 views
0

總之:如何確保我的Backbone表單返回格式與數據格式相同的數據?

當使用骨幹和下劃線的模板,什麼是確保在表單中的數據以完全相同的方式時,發送到服務器,因爲它是當它最初獲取格式化的最好方法是什麼?

較長的問題:我目前使用骨幹fetch()檢索來自服務器的JSON一些數據

。在success我採取這一JSON和使用數據在一個下劃線模板,像這樣:

<div class="module-content"> 
    <form> 
     <div class="customer-primary"> 
      <% if (ParentCompany) { %> 
      <div class="row"> 
       <div class="label">Parent Company</div> 
       <div class="value"> 
        <div class="current-value"><%= ParentCompany %></div> 
        <div class="editable-value"><input name="ParentCompany" value="<%= ParentCompany %>"></div> 
       </div> 
      </div> 
      <% } %> 
      <% if (Title) { %> 
      <div class="row"> 
       <div class="label">Title</div> 
       <div class="value"> 
        <div class="current-value"><%= Title %></div> 
        <div class="editable-value"><input name="Title" value="<%= Title %>"></div> 
       </div> 
      </div> 
      <% } %> 
      … 
     </div> 
    </form> 
</div> 

的JSON擁有一批具有多個條目的孩子,像這樣:

{ 
    "UserID":"12345", 
    "FirstName":"Brandon", 
    "Ship": { 
     "Address1":"33 One Two Ave", 
     "Address2":"#23D", 
     "Address3":"", 
     "City":"New York", 
     "State":"NY", 
     "Country":"United States", 
     "Zip":"10023" 
    }, 
    "Phones": [ 
     { 
     "Kind":"Tel", 
     "Number":"512-123-4567" 
     }, 
     { 
     "Kind":"Fax", 
     "Number":"512-123-4567" 
     } 
    ] 
} 

我怎麼能確保我以這種方式構建表單,以便返回一個對象,該對象的格式設置相同,便於數據庫更新?

如果您需要更多信息,請讓我知道!

+0

爲什麼你的意思是 「格式化以同樣的方式」? – Loamhoof

+0

我只是說我在POST上發回的序列化的JSON對象的格式與它進入時的方式相同。 –

+1

我建議查看一些管理表單/數據綁定的插件。 http://nytimes.github.io/backbone.stickit/ https://github.com/powmedia/backbone-forms。 –

回答

2

如果我理解你的問題,你試圖確保JSON數據結構與發送數據時服務器的期望值相匹配。 (並且巧合的說,它與服務器收到的結構是相同的。)

你想要做的就是覆蓋模型的toJSON函數,這樣你的數據就像預期的那樣被序列化了。然後,當它被Backbone.sync保存時,正確的數據結構將被髮送到遠程API。

看看這些:

+0

沒錯。對我來說棘手的是,接收和發送的JSON都會有2-3層深的子對象(上面示例中的「電話」)。不確定在這些情況下要做什麼。 –

+0

我懷疑我會爲該場景使用數組值: '']」value =「<%= Phone.Number% >「>' –

0

我認爲你可以做的最好的事情就是驗證你的模型。並使需要發送的字段成爲必需字段,如果您需要所有這些字段,請驗證整個模型。 這個插件是這個任務的一個很好的選擇。 https://github.com/fantactuka/backbone-validator