流星オートフォーム(古典的なaldeedパッケージを使用:https://github.com/aldeed/meteor-autoform)では、'score'
という名前のフィールドがあり、値は'optionID'
という別のフィールドの関数です。Meteor autoform - 隠しフィールドの値を計算する
{{#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」の選択された値に依存する関数
Template.formTemplate.helpers({
selectedOptionScore(): String {
const optionID = AutoForm.getFieldValue('optionID');
const optionScore = someFunction(optionID);
return optionScore;
},
});
問題を(Autoform.getFieldValue
を使用して)、フォームの各自動保存に、'score'
の値が「1つの変更の背後にあることです"'optionID'
の値は、'score'
の計算が正しいことを意味しますが、'score'
値が更新される前にmongoへの保存が行われたようです。したがって、mongoでは、'score'
の値は'optionID'
が最後に変更されました。
たとえば、私が'score'
を編集することができないようにすると、ウェブページで直接変更するとmongoに正しく反映されます。しかし、Webページの'optionID'
を変更すると、「1つ後ろに戻る」という振る舞いが得られます。
流星自動フォームフィールドを、同じフォームの別のフィールドに依存させる方法はありますか?常に1つの変更で自動保存に遅れを取らないでください。
パーフェクト。実際、これは私がそれを解決するためにしたものです。そして、これを見ている人の頭として、私のスキーマが十分に特定されていれば、オートヴァージョンも良いと思います。 – tscizzle