我的模板中有这一块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个喜欢的时候,我希望它说&#34; 1喜欢&#34;,当有任何其他数量的喜欢我希望它说'#34; x喜欢,&#34;在语法上是正确的。
{{photo.numLikes}}
正确评估为(0),但两个跨度都没有出现。我无法弄清楚表达方式是怎么回事。
我在控制器中打印出以下内容:
console.log(photo.numLikes, photo.numLikes === 1);
我得到了0, false
。我还检查了photo.numLikes是型号。
为什么这些都不评估?
答案 0 :(得分:3)
很可能photo.numLikes
不属于number
类型。使用===
时,不仅值必须匹配,而且类型也必须匹配。
您可以使用double equals来测试此类型以允许类型强制。
此外,您可以使用ng-bind-template指令并在单个三元操作中评估您的条件,从而使其更加简洁。
<div class='num_likes'
ng-bind-template="{{photo.numLikes}} like{{photo.numLikes == 1 ? '' : 's'}}">
</div>
答案 1 :(得分:0)
为什么你的Html属性有值的单引号。 使用&#39;&#39; &#39;&#39;
答案 2 :(得分:-2)
您也可以尝试使用ngPluralize而不是ng-if表达式