尽管控制台打印,AngularJS ng-if表达式仍无法进行评估

时间:2016-06-04 02:11:37

标签: javascript html angularjs

我的模板中有这一块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是型号。

为什么这些都不评估?

3 个答案:

答案 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表达式