如何确保我的Backbone表单返回格式与其格式相同的数据?

时间:2013-05-29 15:50:09

标签: json backbone.js marionette

简而言之:

使用Backbone和Underscore模板时,确保表单中的数据在发布到服务器时的格式与最初提取时的格式完全相同的最佳方法是什么?

更长的问题:

我目前正在使用Backbone的fetch()从服务器检索一些数据作为JSON。在success我正在使用JSON并使用Underscore模板中的数据,如下所示:

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

我如何确保以这样的方式构建表单:它返回一个格式相同的对象,以便于数据库更新?

如果您需要更多信息,请与我们联系!

2 个答案:

答案 0 :(得分:2)

如果我理解您的问题,那么您正在尝试确保JSON数据结构与服务器在发送数据时所期望的相匹配。 (巧合的是,它与你从服务器收到的结构相同。)

您要做的是覆盖模型的toJSON函数,以便按预期序列化数据。然后,当它被Backbone.sync持久化时,正确的数据结构将被发送到远程API。

看看这些:

答案 1 :(得分:0)

我认为您可以做的最好的事情就是验证您的模型。并且如果您需要所有这些字段,则需要发送您需要的字段,然后验证您的整个模型。 这个插件是这个任务的一个很好的选择。 https://github.com/fantactuka/backbone-validator