货币comapre在angularjs中未按预期工作
我在HTML中有这个angularjs条件货币comapre在angularjs中未按预期工作,angularjs,Angularjs,我在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"> Sem
<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个条件中的任何一个
有没有其他方法可以比较角度货币?比较失败,因为原始数据是字符串而不是数字。您需要先将数据转换为数字。我通过运行以下命令检查了您的数据,它确实返回true Numbers.paid_amount>0&&Numbers.paid_amount
data = data.map(function (o) {
o.paid_amount = Number(o.paid_amount);
o.bill_amount = Number(o.bill_amount);
return o;
});
或者,另一种方法是从ng repeat块内的控制器调用函数
控制器:
模板
当然,可能有更好的方法来实现转换。但这是需要做的要点。支付金额和账单金额的类型如何?@SatanDmytro在mysql中是小数10,2。在控制器内部也是数字?@SatanDmytro在控制器内部我不保存它们。直接循环。http调用后,将数据保存在suppliersscope变量中,然后检查s对象的内容是否正确?你能给我看一下它的console.log吗?
[$scope/vm].toNumber = function (num) {
return Number(num);
}
<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>