gpt4 book ai didi

javascript - 如何使用相同的表格使用 quickForm 更新/插入记录?

转载 作者:行者123 更新时间:2023-11-29 19:35:18 25 4
gpt4 key购买 nike

我有这个 Meteor 模板:

<template name="personalDetailsForm">

{{> quickForm collection="PersonalDetails" id="personalDetailsForm" type="insert"}}
{{> quickForm collection="PersonalDetails" doc=editingDoc id="personalDetailsForm" type="update"}}

</template>

表格如我所料显示,但我只想要一个表格。提交表单时没有数据时插入的空白表单。然后,当重新加载表单时,先前提交的数据将显示在表单上。如果随后再次提交表单,任何已更改的数据都将更新。

当前正在显示插入表单,在其下方显示更新表单,其中包含之前插入的数据。尝试更新第二种形式的数据不起作用,而是插入一条新记录。我想这可能是因为表单 ID 相同。

理想情况下我想做这样的事情:

<body>
{{#if PersonalDetails}}
{{> personalDetailsFormUpdate}}
{{ else }}
{{> personalDetailsFormInsert}}
{{/if}}
</body>

<template name="personalDetailsFormInsert">
{{> quickForm collection="PersonalDetails" id="personalDetailsFormInsert" type="insert"}}
</template>


<template name="personalDetailsFormUpdate">
{{> quickForm collection="PersonalDetails" doc=editingDoc id="personalDetailsFormUpdate" type="update"}}
</template>

我认为这部分文档是我要找的:

Can I reuse the same quickForm or autoForm for both inserts and updates?

Yes. Your code that flips between states should do the following in this order:

Change the type attribute's value to "insert" or "update" as appropriate, probably by updating a reactive variable.
Change the doc attribute's value to the correct document for an update or to null (or a document containing default values) for an insert, probably by updating a reactive variable.
Call AutoForm.resetForm(formId). This will clear any existing validation errors for the form.

谁能举个例子?

最佳答案

前段时间有人问过这个问题,但我遇到了同样的问题,刚刚解决了。

这很简单:

照常获取上下文数据。例如。使用 iron-router,构建一条如下所示的路由:

Router.route('Options', {
path: 'options',
data: function() {
var options = Options.findOne({owner: Meteor.userId()});
return options;
}
});

构建一个新的助手,检查上下文数据(助手中的 this)是否为空(示例适用于在每个模板中工作的全局助手):

UI.registerHelper("formType", function(){

if(_.isEmpty(this)) {
return 'insert'
} else {
return 'update';
}

});

使用新助手设置模板:

<template name="Options">
<h1>Options</h1>
{{> quickForm collection="Options" doc=this id="optionsForm" type=formType omitFields="owner"}}
</template>

现在一切正常。如果数据库没有返回值,表单将自动切换为插入。所以在我的例子中,如果你第一次打开表单,它会使用插入。第二次,它将使用更新。

关于javascript - 如何使用相同的表格使用 quickForm 更新/插入记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25373859/

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