私はこれを持っていますquickForm
:
{{> quickForm id="insertFixie" collection="Fixies" type="insert" doc=seedObject}}
このスキーマでバックアップ:
Fixies = new Meteor.Collection('fixies');
Schema.Fixies = new SimpleSchema({
description: {
type: String,
label: "Description",
trim: true,
optional: true
},
cost: {
type: Number,
label: "Cost",
min: 0,
decimal: true
},
product_id: {
type: String,
autoform: {
omit: true
}
},
});
Fixies.attachSchema(Schema.Fixies);
そしてこのseedObject
方法:
Template.insertFixie.helpers({
seedObject: function () {
console.log({product_id: this._id});
return {product_id: this._id};
}
});
すぐ上のconsole
呼び出しが発生すると、それは正しく、次の効果をもたらします。
Object {product_id: "1"}
しかし、有効なもの (「stuff」や「100」など) を含むフォームを送信すると、次のエラーが発生します。
insert error:
Error: Product is required {invalidKeys: Array[1],
validationContext: SimpleSchemaValidationContext,
stack: (...),
message: "Product is required"}
product_id
属性が必須であり、現在の値が であることを示していますnull
。
私は何を間違っていますか?これproduct_id
はテンプレートに依存する値であるため、スキーマの「autoValue」のようなものは、それを処理する最良の方法とは思えません。
ドキュメントは、私が物事を正しく使用していることを明確に述べているようです。doc
の属性の説明からAuto Form
:
挿入フォームの場合、この属性を使用して、デフォルトのフォーム値が設定されたオブジェクトを渡すこともできます (フォーム内の各フィールドに値属性を設定するのと同じ効果)。
そして、のvalue
属性の説明からafFieldInput
:
value: 入力の特定の、潜在的にリアクティブな値を設定します。autoForm または quickForm で doc 属性も指定した場合、この値は doc オブジェクトの値をオーバーライドします。
私は何が欠けていますか?
編集
autoValue
何がポップアップするかを確認するために、スキーマにフィールドを追加しました。
autoValue: function (doc) {
console.log(doc)
console.log(this.value)
return "1";
}
これにより、フォームを正しく送信できますが、テンプレートからの有用な値ではなく、誤ったハードコーディングされた値「1」が使用されます。2 つのconsole
ログは次のことを示しています。
:24 Object {description: "stuff", cost: 50}
:25 undefined
私のseedObject
値は autoValue で利用できないようです。
onSubmit
フックをハイジャックする必要がありますか? テンプレートから提供された値を持つ非表示のフォーム入力が必要ですか? ここで修正は何ですか?