autoformを介して複雑な入力セットの配列を持つことができるように、スキーマを設定しました。何かのようなもの:
address = {
street:{
type: String
},
city: {
type: String
},
active_address: {
type: Boolean,
optional: true
},
...
}
people: {
name:{
type: String
},
address:{
type: [address],
optional: true,
defaultValue: []
}
}
このように住所を追加することはオプションですが、住所を追加する場合はすべての住所フィールドが必須です。
Boolean
フォームを送信しようとすると、チェックボックスがチェックされていなくても、「住所」の下のすべてのフィールドで必要なエラーがスローされます。
参考までに、次のようなフォームを作成しています。
{{#autoForm collection="people" id=formId type="insert" doc=getDocument autosave=true template="autoupdate"}}
{{> afQuickField name='name' template="autoupdate" placeholder="schemaLabel"}}
{{> afQuickField name='address' template="autoupdate"}}
...
{{/autoForm}}
オートフォームに付属のフォーム テンプレートに基づいて、カスタム フォーム テンプレートを多用しbootstrap3
ています。
試した
次のようにフックを追加しようとしました:
formToDoc:function(doc, ss, formId){
for (var i = 0, l = doc.address.length; i < l; ++i){
if (!doc.address[i].active_address){
delete doc.address[i].active_address;
};
}
return doc;
}
これにより、送信の問題は解決されます""
が、他の値には空の文字列でいっぱいの配列が挿入されます。これにより、私の他の質問に示されているように、更新フォームが混乱します。
問題は、配列が空ではなく、代わりに空の値のオブジェクトがあることです。フォーム内のすべての値を実行して、すべてのフィールドを削除することもできますが、それは非常にハックでコストがかかると感じます。