如何使一个字段依赖于流星自动形成中其他字段的值?

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 来自模板助手的一组 optiondefaultValue。 找到文档 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)"
          }
        }
  }
...
...