我在HTML中有这个angularjs条件
<td>
<div style="color:red" ng-if="s.paid_amount == 0">
Open
</div>
<div style="color:#D5DC07" ng-if="s.paid_amount > 0 && s.paid_amount < s.bill_amount">
Semi Closed
</div>
<div style="color:#02FC1B" ng-if="s.paid_amount == s.bill_amount">
Closed
</div>
<td>
这是来自查询的回复。
理想情况下,它应该为两个记录打印半封闭。但它不打印任何3个条件。
有没有不同的方法比较角度货币?
答案 0 :(得分:1)
比较失败,因为原始数据是字符串而不是数字。您需要先将数据转换为数字。我通过运行以下内容检查了您的数据,它确实返回true。
Number(s.paid_amount) > 0 && Number(s.paid_amount) < Number(s.bill_amount)
现在,您可以通过两种方式将数据转换为数字。首选方法是在控制器内部。您可以在数据集上执行以下操作。
data = data.map(function (o) {
o.paid_amount = Number(o.paid_amount);
o.bill_amount = Number(o.bill_amount);
return o;
});
或者,另一种方法是从ng-repeat块内的控制器调用一个函数。
CONTROLLER:
[$scope/vm].toNumber = function (num) {
return Number(num);
}
<强> TEMPLATE 强>
<td>
<div style="color:red" ng-if="toNumber(s.paid_amount) == 0">
Open
</div>
<div style="color:#D5DC07" ng-if="toNumber(s.paid_amount) > 0 && toNumber(s.paid_amount) < toNumber(s.bill_amount)">
Semi Closed
</div>
<div style="color:#02FC1B" ng-if="toNumber(s.paid_amount == toNumber(s.bill_amount)">
Closed
</div>
当然,可能有更好的方法来实现转换。但这是需要做的事情的要点。