1

我有一个这样的模板数据上下文:

data = {
    "attribute1": {
        "attribute2": {}
    }
}

在流星模板中,我正在做这样的事情:

{{#with attribute1}}
    {{#if attribute2}}
        show some content
    {{/if}}
{{/with}}

如果 attribute2 是一个空对象,我不想显示任何内容。但是我尝试了两者{{#with attribute2}}{{/with}}{{#if attribute2}}{{/if}}并且即使它是一个空对象,它仍然会在里面渲染内容。

检查空格键模板中对象是否为空的正确方法是什么?或者甚至有可能吗?

4

3 回答 3

1

我刚刚找到了一种注册模板助手并使用jQuery.isEmpty进行空检查的方法:

Template.registerHelper("isEmpty", function (object) {
    return jQuery.isEmpty(object);
});

并在模板中使用它:

{{#unless isEmpty attribute2}}
    show some content
{{/unless}}

但是我从这个解决方案中发现了一个缺点,如果我想引用attribute2中的属性,我需要{{#with attribute2}}{{/with}}在unless块中添加

于 2015-05-08T14:17:46.867 回答
0

如果attribute2是一个对象,你可以Object.keys用来检查长度

{{#with attribute1}}
    {{#if !!Object.keys(attribute2).length}}
        show some content
    {{/if}}
{{/with}}
于 2015-05-08T14:05:58.420 回答
0

您的原始代码不起作用的原因是因为您假设空对象在空格键中等于 false。正如Spacebars 文档中所述,只有虚假的 Javascript 值(nullundefined0""false才会被 Spacebars 视为 false。因此,需要使用 Meteor 辅助方法检查一个空对象,就像您接受的答案所暗示的那样。

于 2015-07-21T00:19:23.843 回答