gpt4 book ai didi

javascript - 使用meteor 和 Aldeed 的 autoform 进行动态形式概括和删除

转载 作者:行者123 更新时间:2023-11-28 05:48:04 27 4
gpt4 key购买 nike

我正在使用meteor 和Aldeed 的自动表单来填充我的数据库。我想要实现的基本功能是这样的:

  • 将主要表单正常链接到集合。
  • 在主表单中,有一个按钮添加辅助,可以动态添加链接到不同集合的表单。
  • 第二种形式有一个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 个辅助表单,并将值 abcefghij 放入其中的 fieldA 中分别为三种形式。
  • 然后我用 efg 删除第二个辅助形式,我得到的是剩下的 abcefg !!<
  • 更奇怪的是,当我检查已删除表单的 uniqid 是否是预期的(对应于之前的 efg)时。

看来,当我动态删除表单时,我输入的值会以某种方式保留下来。

有人可以帮忙吗:

  • 我正在做的事情出了什么问题,我该如何解决?
  • 是否有更好的方法来完成我想做的事情?

我也尝试检查答案here,但提供的链接已损坏。

谢谢

最佳答案

我通过完全使用 aldeed:autoformaldeed:collection2 来生成表单,而不是手动插入辅助模板,从而解决了该问题。

这可以通过像往常一样创建两个所需的架构,然后将辅助架构作为数组放到主架构上来实现。

然后是在自动表单中使用 {{> afArrayfield}} 来实现问题中概述的预期结果的问题。

代码将如下所示:

//Schema definition:  
Primary = new Mongo.collection('Primary');
secondary = new SimpleSchema({
/* ... */
});
primary = new SimpleSchema({
/*...*/
secondaries:{
type:[secondary]
}
});

Primary.attachSchema(primary);

//On the HTML form:
{{autoform collection="Primary" id= "form_example" type="insert"}}
<fieldset>
/* any fields*/
{{afArrayField name = 'secondaries'}}
</fieldset>
{{/autoform}}

关于javascript - 使用meteor 和 Aldeed 的 autoform 进行动态形式概括和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38316840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com