You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ember.js中如何在Handlebar模板内联判断数组是否为空?

问题

我有一个包含图标模板的Handlebar模板,代码如下:

<span class="icon {{unbound pperson.medical.diseases '=' 0 'hidden'}}">    
            <img class="icon" src="/assets/img/icons/icon.svg">             
</span>

我需要通过hidden类控制图标的显示与隐藏,当数据数组diseases为空时不显示图标,不为空时显示该图标。我尝试使用条件:

{{unbound pperson.medical.diseases '=' 0 'hidden'}}

但出现报错。我了解到可以编写Ember Handlebars函数来实现,但希望找到无需额外创建函数的内联解决方法,请问是否可行?

解决方案

当然可以用内联方式实现,不需要额外写函数。你可以利用Ember Handlebars内置的助手结合数组特性来完成判断,同时搭配unbound避免不必要的绑定更新,以下是几种可行的写法:

方法1:判断数组长度

直接通过数组的length属性判断是否为空,结合eq助手实现条件类添加:

<span class="icon {{unbound if (eq pperson.medical.diseases.length 0) 'hidden'}}">
  <img class="icon" src="/assets/img/icons/icon.svg">
</span>

当diseases数组长度为0时,会添加hidden类隐藏图标;数组非空时则不添加类,图标正常显示。

方法2:利用数组的“真假性”简化判断

在Handlebars中,空数组会被视为“假值”,非空数组是“真值”,可以用not助手直接判断:

<span class="icon {{unbound if (not pperson.medical.diseases) 'hidden'}}">
  <img class="icon" src="/assets/img/icons/icon.svg">
</span>

这种写法更简洁,空数组时(not pperson.medical.diseases)返回true,添加hidden类;数组有内容时返回false,不添加类。

兼容旧版Ember的写法

如果你的Ember版本较旧,不支持not助手,可以用unless替代:

<span class="icon {{unbound unless pperson.medical.diseases 'hidden'}}">
  <img class="icon" src="/assets/img/icons/icon.svg">
</span>

unless的逻辑是“当表达式为假时输出指定内容”,正好匹配空数组时添加hidden类的需求。

内容的提问来源于stack exchange,提问作者Sam Fisher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:01:14