我的模板中有这段HTML:
<div class='num_likes'>{{photo.numLikes}}
<span ng-if='photo.numLikes === 1'>like<span>
<span ng-if="photo.numLikes !== 1">likes<span>
</div>
当有1个like时,我希望它说“1 like”,当有任何其他的like时,我希望它说“x likes”,语法正确。
{{photo.numLikes}}
正确计算为(0),但两个跨距都不显示。我搞不懂这些表达式是怎么回事。我在控制器上打印了以下内容:
console.log(photo.numLikes, photo.numLikes === 1);
我得到了
0, false
。我还检查了photo.numLikes是否是类型号。为什么这两个都不评估?
最佳答案
很可能photo.numLikes
不是number
类型。使用===
时,不仅值必须匹配,而且类型也必须匹配。
可以使用double equals进行测试,以允许类型强制。
此外,通过使用ng-bind-template指令并在单个三元操作中评估条件,可以使此操作更加简洁。
<div class='num_likes'
ng-bind-template="{{photo.numLikes}} like{{photo.numLikes == 1 ? '' : 's'}}">
</div>