我有以下的骨幹模型創建與嵌套對象和更新骨幹模型複雜的形式JSON表示
var Page = Backbone.Model.extend({
defaults: {
id: null,
metadata: {
name: '',
title: '',
...
},
children: []
parent: null
},
urlRoot: '/api/page',
initialize: function() {}
});
當我保存下列形式,我需要創建這種形式的JSON表示和更新骨幹模型然後將其保存到服務器。我需要這樣做,因爲我的表單是動態創建的,所以我無法使用硬編碼選擇器來查找表單名稱。以下是一個示例表單。
<form>
<label>Name:</label>
<input type="text" name="metadata.name" value="">
<label>Title:</label>
<input type="text" name="metadata.title" value="">
<label>Slug:</label>
<input type="text" name="metadata.slug" value="">
<label>Url:</label>
<input type="text" name="metadata.url" value="">
<button type="submit">Save</button>
</form>
基於HTML表單數據更新骨幹模型的最有效方法是什麼?
編輯
我發現this answer here at stackoverflow,使用方括號,而不是對象之間的點。我認爲這種技術工作得很好,但也許有類似的方式來使用點符號序列化表單?
您是否嘗試序列化的形式作爲一個整體?例如'var form = $('form')[0]; var data = JSON.stringify(form.serializeArray());' –
@ DennisRongo是的,結果與我的骨幹模型不匹配,結果如下所示:[{「name」:「metadata.name」,「value 「:」lorem「},{」name「:」metadata.title「,」value「:」我的標題「},{」name「:」metadata.description「,」value「:」「},{」name 「:」 metadata.slug 「 」值「: 」foo「 的},{ 」名稱「: 」metadata.url「, 」值「: 」foo「 的},{ 」名稱「: 」metadata.published「,」 值「:」0001-01-01T00:00:00「}] – Marcus
當你說'動態表單'時,你的意思是你的字段名稱每次都改變嗎?什麼是動態的呢?你甚至可以爲動態元素做一個選擇器。 –