8

好的,我知道这是超级基本的,但我已经盯着它看了 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

我希望 {{> hello}} 模板能够呈现,但没有运气。我刚得到 {{> goodbye}} 模板。这很奇怪,因为我有其他项目成功地做到了这一点。我必须在这里遗漏一些明显的东西。

4

3 回答 3

20

isTrue变量需要在模板中才能工作。因此,将正文内容放入模板中:

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

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

然后你可以isTrue这样定义:

Template.body.helpers
  isTrue: -> true
于 2013-03-06T16:39:06.103 回答
5

笔记:

Template.body.isTrue = -> true

现在已弃用。

新语法如下所示:

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

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

于 2015-03-19T22:08:21.657 回答
1

使用 Meteor 1.2.0.2 你可以这样做

Template.hello.helpers({
   isTrue() { return true }
});
于 2015-10-14T17:57:09.027 回答