Я использую метод meteor и Aldeed для заполнения моей базы данных. Основная функциональность, которую я хочу достичь:Динамическое расширение формы и удаление с помощью метеор и автоформата Aldeed
- Имейте основную форму, связанную с коллекцией как обычно.
- В основной форме есть кнопка
add secondary
, которая динамически добавляет формы, связанные с другой коллекцией. - Вторая форма имеет кнопку
remove
, которая удаляет ее.
Я следовал метод изложил here и собрать следующий код:
<template name="PricipalForm">
{{#autoForm collection="principal" id="Principalform" type="insert" }}
<fieldset>
<legend>Principal form</legend>
{{> afQuickField name='field1'}}
{{> afQuickField name='field2'}}
<button id='add-inputs' type="button">
Add Proposal
</button>
{{#each inputs}}
{{> AddSecond}}
{{/each}}
</fieldset>
<button type="submit" class="btn btn-primary">Insert</button>
{{/autoForm}}
</template>
./Templates/PrincipalForm.html
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
Template.PrincipalForm.onCreated(function() {
Session.set('props', []);
});
Template.Create.events({
'click #add-inputs': function() {
var inputs = Session.get('inputs');
var uniqid = Math.floor(Math.random() * 100000);/
inputs.push({uniqid: uniqid});
Session.set('inputs', inputs);
}
});
Template.Create.helpers({
inputs: function(){
return Session.get('inputs');
}
});
./Templates/PrincipalForm.js
////////////////////////////////////////////////////
///////////////////////////////////////////////////
<template name ="SecondaryFrom">
{{#autoForm collection="secondary" id="secondaryForm" type="insert" }}
<fieldset>
<legend> One instance of secondary form </legend>
{{> afQuickField name='fieldA' }}
{{> afQuickField name='fieldB'}}
</fieldset>
<button class='remove-inputs' uniqid="{{uniqid}}" type="button">Remove</button>
{{/autoForm}}
</template>
./Templates/SecondaryForm.html
//////////////////////////////////////////
//////////////////////////////////////////
Template.AddProposal.events({
'click .remove-inputs': function(event) {
var uniqid = $(event.currentTarget).attr('uniqid');
var props = Session.get('inputs');
props = _.filter(props, function(x) { return x.uniqid != uniqid; });
Session.set('inputs', inputs);
},
});
./Templates/SecondaryForm.js
Этот код работает отлично, есть только одна ошибка, что я не понимаю:
- Я первый добавьте 3 вторичные формы и введите значения
abc
,efg
,hij
вfieldA
этих трех форм соответственно. - Затем я удаляю вторую вторичную форму с
efg
, и я получаю, что остальныеabc
иefg
!! - , где он становится более странным, так это то, что когда я проверяю
uniqid
удаленной формы, это ожидаемая (и соответствующая предыдущейefg
).
Так что, когда я удаляю форму динамически, значения, которые я набираю, сохраняются как-то.
Может кто-нибудь пожалуйста помогите:
- Что идет не так в том, что я делаю, как я мог это исправить?
- Возможно, лучший способ сделать то, что я пытаюсь сделать?
Я также попытался проверить Ответ на этот вопрос here , но ссылки, представленные были сломаны.
Благодаря