将变量传递到Meteor模板并在handlebar中使用所述变量if语句

时间:2015-08-25 19:01:40

标签: meteor handlebars.js

我正在尝试将变量传递到Meteor.js模板中,然后在if语句中使用该变量(在所述模板中)。我可以做的一个解决方案是简单地使用三个单独的模板而不是使用if语句划分一个模板,但我想知道是否有更好的方法来执行它。我知道您无法在其他{{}}内使用{{}},并且如果语句似乎也无法处理相等比较,那么也会使用句柄。

这是我的代码( idType 是我通过的变量):

<template name="license">
    {{> idForm idType="license"}}
</template>

<template name="idForm">
    <form class="idForm">
        {{#if idType=="license"}}
            <span>Driver's License Details</span>
            <input type="text" id="su-licenseNo" placeholder="License Number" />
            <input type="text" id="su-surname" placeholder="Surname" />
            <input type="text" id="su-givenNames" placeholder="Given Names" />
            <input type="text" id="su-dateOfIssue" placeholder="Date Of Issue" />
            <input type="text" id="su-dateOfExpiry" placeholder="Date Of Expiry" />
            <input type="text" id="su-height" placeholder="Height" />
        {{/if}}

        {{#if idType=="passport"}}
            <span>Passport Details</span>
            <input type="text" id="su-type" placeholder="Type" />
            <input type="text" id="su-issuingCountry" placeholder="Issuing Country" />
            <input type="text" id="su-passportNo" placeholder="Passport Number" />
            <input type="text" id="su-surname" placeholder="Surname" />
            <input type="text" id="su-givenNames" placeholder="Given Names" />
            <input type="text" id="su-nationality" placeholder="Nationality" />
            <input type="text" id="su-dateOfIssue" placeholder="Date Of Issue" />
            <input type="text" id="su-dateOfExpiry" placeholder="Date Of Expiry" />
        {{/if}}

        {{#if idType=="sin"}}
            <span>SIN Details</span>
            <input type="text" id="su-surname" placeholder="Surname" />
            <input type="text" id="su-givenNames" placeholder="Given Names" />
            <input type="text" id="su-number" placeholder="SIN" />
        {{/if}}

        <button>Submit!</button>
    </form>
</template>

1 个答案:

答案 0 :(得分:1)

您无法在{{#if ...}}手柄语句中进行比较,{{#if idType=="license"}}不是有效的句柄语法。

您可以通过制作comparison helper来解决这个问题,或者您可以稍微改变一下使用情况并执行此操作:

<template name="license">
  {{> idForm isLicense=1}}
</template>

<template name="idForm">
  <form class="idForm">
    {{#if isLicense}}
      ...
    {{/if}}
    {{#if isPassport}} <!-- this will be false since it was omitted -->
      ...
    {{/if}}
  </form>
</template>