【问题标题】:Check existence of a variable in handlebar检查车把中是否存在变量
【发布时间】:2014-06-22 14:18:41
【问题描述】:

我有一个 javascript 对象,例如:

var data = {
"current" : 0,
"max" : 5,
"reward" : 5
};

我正在使用车把这样的数据创建一个 HTML:

<div>
<span>Current : {{current}}</span>
<span>Max : {{max}}</span>
<span>Reward: {{reward}}</span>
</div>

现在的问题是,奖励属性可能并不总是存在于数据中,在这种情况下,我不想显示该跨度。所以,我做了以下:-

{{#if reward}}
 <span>Reward: {{reward}}</span>
{{/if}}

而且它正在工作,如果奖励属性不存在,它不会显示跨度,但如果奖励的值为0,它也不会显示跨度,任何人都可以建议如何解决它。我可以使用一些辅助功能。但是,我可以在不使用任何辅助函数的情况下做到这一点吗?

【问题讨论】:

  • 在您的 data 对象中,您可以有一个 rewardExists 布尔值,然后在您的模板中:{{#if rewardExists}}
  • 其实我可以通过一些辅助函数或者添加一个额外的变量来解决这个问题,我只是想知道车把是否提供了这样的标签。 “如果”在这里不起作用,还有什么?

标签: javascript handlebars.js


【解决方案1】:

这是设计使然if 检查falsy 值请参阅handlebarsjs.com

您可以使用 if 助手有条件地渲染一个块。如果它是 参数返回 false、undefined、null、"" 或 [](“假”值), Handlebars 不会渲染方块。

有一个includeZero 选项使用如下:

{{#if reward includeZero=true}}
{{/if}}

你可以在这里看到助手的实现:on github

【讨论】:

  • 如果我覆盖了实际的 if 助手,它也将应用于其他模板。因此,如果在任何其他模板中,我根据变量的值(包括 0)添加/删除任何块,它将不起作用。如果单个模板的帮助程序,我无法更改默认值。无论如何,该链接很有帮助,我知道我需要编写一个自定义帮助程序。
  • 不幸的是,这似乎不适用于空数组
  • @stackers 使用array.length
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 2017-02-13
    • 2011-12-19
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多