算术加法(+)在ng-bind中不起作用

时间:2015-09-09 11:47:15

标签: javascript angularjs ng-bind

有一个对象

objData.pendingCount = '2',objData.refundCount = '1',objData.saleCount = 43;

我进行了

<td ng-bind="(objData.pendingCount / objData.saleCount * 100).toFixed(2)"></td>

这很好但是当我做的时候

<td ng-bind="(objData.pendingCount +objData.refundCount)/ objData.saleCount * 100).toFixed(2)"></td>

这里+没有执行算术运算而是正在进行仲裁。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

我假设这些值来自某种文本框(通过ng-model)。如果是这样,解决这个问题的最简单方法是在它们上设置一个type='number',而角度则会处理其余部分!

<input ng-model="objData.pendingCount" type="number" />
...

另一种方法是简单地加前缀+以强制进行数字转换,如此

<span ng-bind="((+objData.pendingCount + +objData.refundCount)/ objData.saleCount * 100).toFixed(2)"></span>

为什么你不能使用数字(...)使字符串成为Angular表达式中的数字

使用Number将字符串转换为数字不会直接起作用,因为(来自https://docs.angularjs.org/guide/expression

  

上下文:JavaScript表达式是针对全局进行评估的   窗口。在Angular中,表达式是针对范围对象进行评估的。

因此,如果您需要使用Number,您可以执行类似

的操作
$scope.Number = $window.Number;
在表达式中使用它之前,在控制器中

。其他全局窗口属性也是如此。

答案 1 :(得分:2)

纠正你的表情:

<td ng-bind="(objData.pendingCount +objData.refundCount)/ (objData.saleCount * 100).toFixed(2)"></td>

缺少一个空心括号