句柄中的#if语句

时间:2013-03-06 16:26:43

标签: meteor handlebars.js

好的,我知道这是超级基础的,但我已经盯着它看了2天,看不出它为什么不起作用。我使用Handlebars IF帮助器有条件地渲染模板。

这是HTML:

<head>
    <title>flash</title>
</head>

<body>
    {{#if isTrue}}
        {{> hello}}
    {{else}}
        {{> goodbye}} 
    {{/if}}
</body>

<template name="hello">
    <h1>Hello!</h1>
</template>

<template name="goodbye">
    <h1>Goodbye!</h1>
</template>

以下是简单的咖啡文件:

isTrue = true

我希望{{&gt; hello}}模板来渲染,但没有运气。我刚刚得到{{&gt;再见}}模板。这是奇怪的,因为我有其他项目,我已成功完成此任务。我必须在这里遗漏一些明显的东西。

3 个答案:

答案 0 :(得分:20)

isTrue变量需要位于模板中才能生效。因此,将正文内容放在模板中:

<body>
    {{> body}}
</body>

<template name="body">
    {{#if isTrue}}
        {{> hello}}
    {{else}}
        {{> goodbye}} 
    {{/if}}
</template>

然后你可以像这样定义isTrue

Template.body.helpers
  isTrue: -> true

答案 1 :(得分:5)

注意:

Template.body.isTrue = -> true

现已弃用。

新语法如下所示:

Template.test.helpers({
  'isTrue': function(){
    return true;
  }
});

它应该仍然可以工作,但如果你打开你的控制台,它会给你一个关于语法的警告。

答案 2 :(得分:1)

使用Meteor 1.2.0.2你可以这样做

<doc>
   <billing-firstname>N. M.</billing-firstname>
   <billing-firstname>T.</billing-firstname>
</doc>