如何检查 Meteor 模板中的空对象?
How Do I Check For an Empty Object in a Meteor Template?
我有一个这样的模板数据上下文:
data = {
"attribute1": {
"attribute2": {}
}
}
在流星模板中,我正在做这样的事情:
{{#with attribute1}}
{{#if attribute2}}
show some content
{{/if}}
{{/with}}
如果 attribute2 是空对象,我不想显示任何内容。但是我尝试了 {{#with attribute2}}{{/with}}
和 {{#if attribute2}}{{/if}}
并且它仍然在渲染里面的内容,即使它是一个空对象。
在空格键模板中检查对象是否为空的正确方法是什么?或者有可能吗?
如果attribute2
是一个对象,你可以使用Object.keys
来检查长度
{{#with attribute1}}
{{#if !!Object.keys(attribute2).length}}
show some content
{{/if}}
{{/with}}
我刚刚找到了一种注册模板助手并使用 jQuery.isEmpty 进行空值检查的方法:
Template.registerHelper("isEmpty", function (object) {
return jQuery.isEmpty(object);
});
并在模板中使用它:
{{#unless isEmpty attribute2}}
show some content
{{/unless}}
但是我发现这个解决方案有一个缺点,如果我想在 attribute2 中引用属性,我需要在 unless 块中添加 {{#with attribute2}}{{/with}}
您的原始代码不起作用的原因是您假设空对象在空格键中等同于 false。正如 Spacebars 文档中提到的 here,只有虚假的 Javascript 值(null
、undefined
、0
、""
和 false
) 将被空格键视为错误。因此,需要像您接受的答案建议的那样使用 Meteor 辅助方法检查空对象。
我有一个这样的模板数据上下文:
data = {
"attribute1": {
"attribute2": {}
}
}
在流星模板中,我正在做这样的事情:
{{#with attribute1}}
{{#if attribute2}}
show some content
{{/if}}
{{/with}}
如果 attribute2 是空对象,我不想显示任何内容。但是我尝试了 {{#with attribute2}}{{/with}}
和 {{#if attribute2}}{{/if}}
并且它仍然在渲染里面的内容,即使它是一个空对象。
在空格键模板中检查对象是否为空的正确方法是什么?或者有可能吗?
如果attribute2
是一个对象,你可以使用Object.keys
来检查长度
{{#with attribute1}}
{{#if !!Object.keys(attribute2).length}}
show some content
{{/if}}
{{/with}}
我刚刚找到了一种注册模板助手并使用 jQuery.isEmpty 进行空值检查的方法:
Template.registerHelper("isEmpty", function (object) {
return jQuery.isEmpty(object);
});
并在模板中使用它:
{{#unless isEmpty attribute2}}
show some content
{{/unless}}
但是我发现这个解决方案有一个缺点,如果我想在 attribute2 中引用属性,我需要在 unless 块中添加 {{#with attribute2}}{{/with}}
您的原始代码不起作用的原因是您假设空对象在空格键中等同于 false。正如 Spacebars 文档中提到的 here,只有虚假的 Javascript 值(null
、undefined
、0
、""
和 false
) 将被空格键视为错误。因此,需要像您接受的答案建议的那样使用 Meteor 辅助方法检查空对象。