gpt4 book ai didi

javascript - Meteor autoform - 计算隐藏字段的值

转载 作者:行者123 更新时间:2023-12-03 06:21:44 24 4
gpt4 key购买 nike

在 meteor 自动表单中(使用经典的 aldeed 包: https://github.com/aldeed/meteor-autoform ),我有一个名为 'score' 的隐藏字段,其值是另一个名为 'optionID' 的字段的函数.

{{#autoForm
class = "autoform"
id = dataID
collection = (getCollection 'DataColl')
doc = dataDoc
type = "method-update"
meteormethod = "DataColl.autoformUpsert"
singleMethodArgument = true
autosave = true
}}

{{> afQuickField
name = 'optionID'
type = "select-radio"
template = "buttonGroup"
options = scoreOptions
}}

{{> afQuickField
name = 'score'
type = "hidden"
value = selectedOptionScore
}}

{{/autoform}}

函数selectedOptionScore取决于“optionID”的选定值(使用Autoform.getFieldValue)

Template.formTemplate.helpers({
selectedOptionScore(): String {
const optionID = AutoForm.getFieldValue('optionID');
const optionScore = someFunction(optionID);
return optionScore;
},
});

问题在于,在表单的每次自动保存中,'score' 的值是 'optionID' 的值“落后一处”,这意味着该函数计算'score'是正确的,但是保存到mongo似乎是在'score'值更新之前发生的,所以在mongo中,'score' 具有 'optionID' 最后更改之前的值。

例如,如果我将'score'设置为不隐藏以便我可以修改它,那么直接在网页中修改它就会使其值在mongo中正确反射(reflect)。但是在网页中修改 'optionID' 会产生“后面的一个更改”行为。

是否有一种方法可以使 meteor 自动形成字段依赖于相同形式的另一个字段,而不会使其始终“落后于”自动保存一个更改?

最佳答案

您可能需要考虑使用autoform hook,而不是使用模板助手来计算隐藏的score字段的值。 。因此,您可以定义一个如下的钩子(Hook),而不是使用 selectedOptionScore 模板助手:

AutoForm.addHooks(['your-form-id'], {
before: {
method-update(doc) {
doc.score = someFunction(doc.optionID);
return doc;
}
}
});

这样,在保存表单之前,就会设置计算出的分数,并与其他所有内容一起保存。

关于javascript - Meteor autoform - 计算隐藏字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38838431/

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