我的模板中有这段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>

08-18 20:41