来自Jade模板的Handlebars条件检查属性

md-*_*ben 10 html javascript node.js handlebars.js pug

我想把我的把手模板送给客户看起来像

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

要么

<input type='checkbox' {{#if isChecked}}checked{{/if}}>
Run Code Online (Sandbox Code Playgroud)

如何编写将编译为此的Jade模板?从他们的文档中,如果指定的值是真实的,但是实际上不包括值,则将包括已检查的属性:

input(type="checkbox", checked="{{isChecked}}")
Run Code Online (Sandbox Code Playgroud)

编译成

<input type='checkbox' checked>
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

input(type="checkbox", checked={{isChecked}})
Run Code Online (Sandbox Code Playgroud)

input(type="checkbox", {{#if isChecked}}checked{{/if}})
Run Code Online (Sandbox Code Playgroud)

只是无法编译,我理解

jmi*_*gov 17

好好直接在你的玉石模板中试试.

<input type='checkbox' {{#if isChecked}}checked{{/if}}>
Run Code Online (Sandbox Code Playgroud)

应保持相同的格式.

捕获


spo*_*rts 9

我建议创建一个更通用的帮助程序,以后可以轻松重用

Handlebars.registerHelper("checkedIf", function (condition) {
    return (condition) ? "checked" : "";
});
Run Code Online (Sandbox Code Playgroud)

然后,您可以在任何模板中使用它:

<script id="some-template" type="text/x-handlebars-template">
   ...
   <input type="checkbox" {{checkedIf this.someField}} />
   ...
</script>
Run Code Online (Sandbox Code Playgroud)

这将呈现为

<input type="checkbox" checked />

 or...

<input type="checkbox" />
Run Code Online (Sandbox Code Playgroud)

取决于someField(映射到模板的对象的字段)的值