我有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"}
但是当我提交有效的表格时(例如"东西"和#34; 100"),我收到此错误:
insert error:
Error: Product is required {invalidKeys: Array[1],
validationContext: SimpleSchemaValidationContext,
stack: (...),
message: "Product is required"}
声明product_id
属性是必需的,且当前的值为null
。
我做错了什么?那个product_id
是依赖于模板的值,所以类似于" autoValue"在架构中似乎不是处理它的最佳方式。
文档似乎清楚地表明我正确地使用了东西。来自doc
的{{1}}属性的说明:
对于插入表单,您还可以使用此属性来传递对象 设置了默认表单值(与设置值的效果相同 表格中每个字段的属性。)
来自Auto Form
的{{1}}属性的说明:
值:为输入设置特定的潜在反应值。如果 你还在autoForm或quickForm上提供了doc属性, 该值将覆盖doc对象的值。
我错过了什么?
我在我的架构中添加了value
字段,只是为了查看弹出的内容:
afFieldInput
这允许表单正确提交,但使用不正确的硬编码值" 1"而不是模板中的有用值。这两个autoValue
日志显示了这一点:
autoValue: function (doc) {
console.log(doc)
console.log(this.value)
return "1";
}
似乎我的console
值不可用于autoValue。
我是否必须劫持:24 Object {description: "stuff", cost: 50}
:25 undefined
个钩子?我是否必须使用模板提供的值隐藏表单输入?这里的解决方法是什么?
答案 0 :(得分:2)
原来是一个隐藏的输入。
我将表格扩展到:
{{#autoForm id="insertFixie" collection="Fixies" type="insert"}}
<fieldset>
{{> afFormGroup name="description" placeholder="schemaLabel" label=false}}
<div class="form-group{{#if afFieldIsInvalid name='cost'}} has-error{{/if}}">
<div class="input-group">
<div class="input-group-addon">$</div>
{{> afFieldInput name="cost" placeholder="schemaLabel" label=false}}
</div>
{{#if afFieldIsInvalid name="cost"}}
<span class="help-block">{{afFieldMessage name="cost"}}</span>
{{/if}}
</div>
{{> afFormGroup name="product_id" type="hidden" value=_id}}
</fieldset>
<button class="btn btn-primary" type="submit">Insert</button>
{{/autoForm}}
使用afFormGroup
添加type="hidden"
就可以了。
虽然在我看来doc
这个论点似乎还没有达到它的承诺。