如何使用autoform用#each填充select元素?

时间:2015-03-31 20:35:20

标签: meteor meteor-autoform

以下是我希望转换为使用autoform的表单的一部分。

<div class="col-lg-4 col-md-4 col-sm-4">
<label for="pay_with" id="pay_with_label">Pay With</label>
<select name="pay_with" id="pay_with" class="form-control select select-primary mbl" required data-placeholder="Select an Option">
    <option value="Card">New Card</option>
    <option value="Check">New Bank</option>
    {{#each device}}
        <option value="{{card_id}}" selected {{selected}}>{{brand}} - {{last4}}</option>
    {{/each}}
</select>

在autoform中,我该如何翻译这部分?

{{#each device}}
    <option value="{{card_id}}" selected {{selected}}>{{brand}} - {{last4}}</option>
{{/each}}

1 个答案:

答案 0 :(得分:2)

创建一个模板助手函数,它返回选择菜单的options数组,方法是映射你的设备数组并添加额外的选项,以便为autoform获得正确的模式,如下所示:

Template.myForm.helpers({
   deviceOptions: function() {

      var deviceOpts = devices.map(function(device) {
         return { label: device.brand+' - '+device.last4, value: device.card_id }
      });

      deviceOpts.unshift({ label: 'New bank', value: 'Check' });
      deviceOpts.unshift({ label: 'New card', value: 'Card' });

      return deviceOpts;
   },
});

然后,您可以在模板指令中调用帮助程序:

{{> afFieldInput name="payWith" type="select" options=deviceOptions }}