如何使一个字段依赖于流星自动形成中其他字段的值?
How to make one field Dependent on other field's value in meteor autoform?
我是 meteor 的新手,我想创建一个表单,其中一个字段的值决定自动表单中另一个字段的值。让我们将设置类型设置为 "A"、"B" 和 "C",因此当我 select "A" 时,将加载自动表单。我已将此表格设为通用表格,即它将针对所有 A、B 和 C 显示。
{{#each users}}
{{> afQuickField name='userEmail' value=userEmail readOnly=true }}
{{> afQuickField name='Setup' value=type readOnly=true}}
{{> afQuickField name='Profile' options='allowed' }}
{{> afQuickField name='Purpose' }}
{{> afQuickField name='count' options='allowed' }}
{{> afQuickField name='PackageDirectory' options='allowed' }}
{{> afQuickField name="logName" options=LogName }}
{{/each}}
计数选项应为:
1. 对于 "A" 计数选项应该是 9,11,12.
2. "B" 是 1.
3. "C" 是 5.
在模式中我写了这样的代码
Setup:{
type: String,
label:"Setup",
optional:false,
defaultValue:type
},
count:{
type: String,
label:"No. Of count",
optional: true,
allowedValues:["9","11","12"],
autoform:{
afFieldInput:{
firstOption:"(Select the count)"
}
}
}
所以当我 select 设置 "A" 我应该得到三个下拉选项,当我点击 "B" 和 "C" 我应该得到默认值 1 和5分别。
谁能解决我的问题?
您可以使用 getFieldValue
获取特定字段的值,并基于它 return 来自模板助手的一组 option
或 defaultValue
。
找到文档 here
所以按照你的代码:
form.html:
...
{{#autoForm id="sampleFormID" ... ... }}
{{> afQuickField name='Setup' value=type readOnly=true}}
{{> afQuickField name='count' options=allowedOptionHelper defaultValue=defaultValueHelper }}
...
{{/autoForm}}
form.js
Template.templateName.helpers({
allowedOptionsHelper: function() {
if (AutoForm.getFieldValue('Setup', 'sampleFormID') === 'A') {
return [{label:"9", value:"9"},{label:"11",value:"11"},{label:"12", value:"12"}];
else
if (AutoForm.getFieldValue('Setup', 'sampleFormID') === 'B') {
// return the options for B
} else if (AutoForm.getFieldValue('Setup', 'sampleFormID') === 'C')) {
// return the options for C
}
},
defaultValueHelper: function() {
if (AutoForm.getFieldValue('Setup', 'sampleFormID') === 'A') {
return 11 //or whatever the defaultValue is;
}
//likewise for options B and C
}
});
schema.js
...
...
count:{
type: String,
label:"No. Of count",
optional: true,
autoform:{
afFieldInput:{
firstOption:"(Select the count)"
}
}
}
...
...
我是 meteor 的新手,我想创建一个表单,其中一个字段的值决定自动表单中另一个字段的值。让我们将设置类型设置为 "A"、"B" 和 "C",因此当我 select "A" 时,将加载自动表单。我已将此表格设为通用表格,即它将针对所有 A、B 和 C 显示。
{{#each users}}
{{> afQuickField name='userEmail' value=userEmail readOnly=true }}
{{> afQuickField name='Setup' value=type readOnly=true}}
{{> afQuickField name='Profile' options='allowed' }}
{{> afQuickField name='Purpose' }}
{{> afQuickField name='count' options='allowed' }}
{{> afQuickField name='PackageDirectory' options='allowed' }}
{{> afQuickField name="logName" options=LogName }}
{{/each}}
计数选项应为:
1. 对于 "A" 计数选项应该是 9,11,12.
2. "B" 是 1.
3. "C" 是 5.
在模式中我写了这样的代码
Setup:{
type: String,
label:"Setup",
optional:false,
defaultValue:type
},
count:{
type: String,
label:"No. Of count",
optional: true,
allowedValues:["9","11","12"],
autoform:{
afFieldInput:{
firstOption:"(Select the count)"
}
}
}
所以当我 select 设置 "A" 我应该得到三个下拉选项,当我点击 "B" 和 "C" 我应该得到默认值 1 和5分别。 谁能解决我的问题?
您可以使用 getFieldValue
获取特定字段的值,并基于它 return 来自模板助手的一组 option
或 defaultValue
。
找到文档 here
所以按照你的代码:
form.html:
...
{{#autoForm id="sampleFormID" ... ... }}
{{> afQuickField name='Setup' value=type readOnly=true}}
{{> afQuickField name='count' options=allowedOptionHelper defaultValue=defaultValueHelper }}
...
{{/autoForm}}
form.js
Template.templateName.helpers({
allowedOptionsHelper: function() {
if (AutoForm.getFieldValue('Setup', 'sampleFormID') === 'A') {
return [{label:"9", value:"9"},{label:"11",value:"11"},{label:"12", value:"12"}];
else
if (AutoForm.getFieldValue('Setup', 'sampleFormID') === 'B') {
// return the options for B
} else if (AutoForm.getFieldValue('Setup', 'sampleFormID') === 'C')) {
// return the options for C
}
},
defaultValueHelper: function() {
if (AutoForm.getFieldValue('Setup', 'sampleFormID') === 'A') {
return 11 //or whatever the defaultValue is;
}
//likewise for options B and C
}
});
schema.js
...
...
count:{
type: String,
label:"No. Of count",
optional: true,
autoform:{
afFieldInput:{
firstOption:"(Select the count)"
}
}
}
...
...