【问题标题】:Check if an object is empty in Nunjucks检查 Nunjucks 中的对象是否为空
【发布时间】:2016-10-20 16:18:00
【问题描述】:

所以我在我的 Node.js 应用程序中使用 Nunjucks 作为模板引擎。

我有一个对象,我们将调用 var,它可能为空,也可能不为空。

当它是空的,如果我这样做 {{ var | dump }}Nunjucks 正确显示它是一个空对象,显示 {}

问题是,我找不到任何方法来使用 Nunjuck 的 {% if condition %} 语句检查对象是否为空。我已经尝试过var.lengthvar | lengthvar | first 和简单的var 条件,但它们都不起作用,它们都只是评估为真(或假),无论是否var是空的。有谁知道如何解决这个问题?

编辑:使用{% if var | dump != '{}' %} 确实有效,但似乎是一个非常老套的解决方案......

编辑 2:我最终只是为满足我需要的对象创建了一个自定义 empty 过滤器:

env.addFilter('empty', function(object) {
    return Object.keys(object).length === 0;
});

【问题讨论】:

    标签: javascript node.js templating nunjucks


    【解决方案1】:

    最近在Nunjucks 2.5.0 中添加了对使用length 过滤器访问对象长度的支持。

    所以你现在可以使用:

    {% if var|length %}
    

    【讨论】:

    • 上帝保佑你和你的家人。但是您能否提供更多关于我应该如何真正“理解”该语法的信息?因为这对我来说毫无意义:)
    • @BBerastegui length 过滤器返回对象中的项目数。如果在这种情况下 var 是一个空对象,则它返回长度 0。这将评估为 false,因此 if 条件不会运行。另一方面,任何积极的length 都会评估为真,并且条件块将运行。
    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2013-10-11
    • 2014-01-01
    相关资源
    最近更新 更多