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

Posted

技术标签:

【中文标题】来自 Jade 模板的车把条件检查属性【英文标题】:Handlebars conditional checked property from Jade template 【发布时间】:2013-05-23 17:19:52 【问题描述】:

我希望提供给客户的车把模板看起来像

<input type='checkbox' checked=isChecked>

<input type='checkbox' #if isCheckedchecked/if>

如何编写一个可以编译成这个的 Jade 模板?从他们的文档中,如果分配的值是真实的但实际上不包含该值,则将包含选中的属性:

input(type="checkbox", checked="isChecked")

编译成

<input type='checkbox' checked>

我也试过了:

input(type="checkbox", checked=isChecked)

input(type="checkbox", #if isCheckedchecked/if)

只是编译失败,我理解

【问题讨论】:

【参考方案1】:

直接在你的翡翠模板中试试吧。

<input type='checkbox' #if isCheckedchecked/if>

应该保持相同的格式。

【讨论】:

【参考方案2】:

我建议创建一个更通用的帮助器,以便以后轻松重用

Handlebars.registerHelper("checkedIf", function (condition) 
    return (condition) ? "checked" : "";
);

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

<script id="some-template" type="text/x-handlebars-template">
   ...
   <input type="checkbox" checkedIf this.someField />
   ...
</script>

这将呈现为

<input type="checkbox" checked />

 or...

<input type="checkbox" />

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

【讨论】:

你如何检查一个否定的,比如检查是否为假? @dvidsilva 我已经很久没有使用 Handlebars 了……这行得通吗? checkedIf !this.someField? 不是真的,我最终不得不写checkedIf和checkedIfNot :O

以上是关于来自 Jade 模板的车把条件检查属性的主要内容,如果未能解决你的问题,请参考以下文章

Jade 复选框选中属性未选中基于条件(如果)

Jade 条件(if/else)将类添加到 div 内联

pug模板引擎(原jade)之 注释条件包含

Jade 模板 if 语句

Jade - 模板引擎:如何检查变量是不是存在

检查一个值是否等于Ember Handlebar中的块助手