Qual è l'approccio migliore per mostrare dinamicamente i campi di uno schema secondario (oggetto) in base a un altro campo? Nell'esempio seguente un documento (Schemas.Main) può includere diversi elementi definiti in Schemas.Items. I campi necessari per compilare gli articoli dipendono dal tipo selezionato.Autoform: come visualizzare e aggiungere dinamicamente campi di uno schema secondario a seconda di un altro campo?
Ad esempio, se un utente seleziona type == "type1", i campi "type1_field1" e "type1_field2" devono essere compilati.
Una soluzione probabilmente deve utilizzare AutoForm e combinare AutoForm.getFieldValue e campi di impostazione di un campo afArray, correggere? Ho provato molte combinazioni, ma la possibilità di aggiungere elementi aggiuntivi è persa (manca il segno più) o non posso aggiungere elementi diversi (ad esempio tutti gli elementi sono di tipo 1). Qualche suggerimento su come risolvere questo?
//Schemas.js
Schemas = {}; Collections = {};
Main = Collections.Main = new Mongo.Collection("Main");
Main.attachSchema(Schemas.Main);
Meteor.isClient && Template.registerHelper("Schemas", Schemas);
Schemas.Main = new SimpleSchema({
name: {
type: String
},
items: {
type: [Schemas.Items]
}
});
Schemas.Items = new SimpleSchema({
type: { //FormActions...
type: String,
allowedValues: ['type1', 'type2', 'type3'],
autoform: {
type: "selectize"
}
},
type1_field1: {
type: String
},
type1_field2: {
type: String
},
type2_field1: {
type: String
},
type2_field2: {
type: String
},
type3_field1: {
type: String
},
type3_field2: {
type: String
}
});
//form.html
{{#autoForm id="testForm" type="insert" collection=Collections.Main}}
{{> afFieldInput name='name'}}
{{> afArrayField name='items' fields="items.$.type, items.$.type1_field1"}} //How to set these fields dynamically depending on type?
<div class="form-group">
<button type="submit" class="btn btn-primary">Create</button>
</div>
{{/autoForm}}
Provato 100 cose diverse, ma questo ha funzionato come un fascino. Grazie! +1 per questo ... Questo dovrebbe essere al centro. Lasciami lavorare su una soluzione e inviare una richiesta pull a aldeed ... – Guns