句柄中的#if语句

ppe*_*zzi 8 handlebars.js meteor

好吧,我知道这是超级基础的,但我已经盯着它看了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>
Run Code Online (Sandbox Code Playgroud)

这是简单的咖啡文件:

isTrue = true
Run Code Online (Sandbox Code Playgroud)

我希望{{> hello}}模板可以渲染,但没有运气.我刚收到{{> goodbye}}模板.这是奇怪的,因为我有其他项目,我已成功完成此任务.我必须在这里遗漏一些明显的东西.

Sjo*_*her 20

isTrue变量必须在模板中为它工作.因此,将正文内容放在模板中:

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

<template name="body">
    {{#if isTrue}}
        {{> hello}}
    {{else}}
        {{> goodbye}} 
    {{/if}}
</template>
Run Code Online (Sandbox Code Playgroud)

然后你可以这样定义isTrue:

Template.body.helpers
  isTrue: -> true
Run Code Online (Sandbox Code Playgroud)


小智 5

注意:

Template.body.isTrue = -> true
Run Code Online (Sandbox Code Playgroud)

现已弃用.

新语法如下所示:

Template.test.helpers({
  'isTrue': function(){
    return true;
  }
});
Run Code Online (Sandbox Code Playgroud)

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