如何在Meteor(使用空格键模板)中为输入控件指示"已选中"或"已选择"状态?

jon*_*omo 4 meteor spacebars meteor-helper

因此,当我使用Meteor时,我正试图在我的Spacebars模板中保持高效和干净.但我对处理复选框和选择选项的方式感到困惑.假设我想要一个复选框设置为是否选中,具体取决于我的某个集合中的文档中的标志.我似乎无法执行以下操作:

<input type='checkbox' id='item-{{this.item_id}}' {{#if checked}}checked{{/if}} />
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我收到以下错误:

A template tag of type BLOCKOPEN is not allowed here.
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试以下选项,它们都会导致复选框被检查,即使标志是false:

<input type='checkbox' id='item-{{this.item_id}}' checked='{{#if checked}}true{{/if}}' />
<input type='checkbox' id='item-{{this.item_id}}' checked='{{#if checked}}true{{else}}false{{/if}}' />
Run Code Online (Sandbox Code Playgroud)

selected在我的选择选项中遇到了同样的问题,所以我最终做了类似下面的事情来解决它,这看起来很冗长且容易出错:

<select id='option-{{this.item_id}}'>
    {{#if option_60}}
        <option value='60' selected>1 hour</option>
    {{else}}
         <option value='60'>1 hour</option>
    {{/if}}

    {{#if option_90}}
         <option value='90' selected>90 mins</option>
    {{else}}
        <option value='90'>90 mins</option>
    {{/if}}

    {{#if option_120}}
         <option value='120' selected>2 hours</option>
    {{else}}
         <option value='120'>2 hours</option>
    {{/if}}
</select>
Run Code Online (Sandbox Code Playgroud)

Hub*_* OG 7

您可以使用非块助手来放置这样的参数:

UI.registerHelper('checkedIf', function(val) {
  return val ? 'checked' : '';
});

<input type="checkbox" {{checkedIf checked}}>
Run Code Online (Sandbox Code Playgroud)