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

标签 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>

这里 + 不是执行算术运算,而是连接。我怎样才能做到这一点?

最佳答案

我假设这些值来自某种文本框(通过 ng-model)。如果是这样,解决这个问题的最简单方法是在它们上设置一个 type='number',angular 会处理剩下的事情!

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

另一种方法是简单地加上前缀 + 来强制进行数字转换,就像这样

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

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

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

Context: JavaScript expressions are evaluated against the global window. In Angular, expressions are evaluated against a scope object.

所以如果你需要使用Number,你可以做类似的事情

$scope.Number = $window.Number;

在你的 Controller 中,然后在你的表达式中使用它。其他全局窗口属性也是如此。

关于javascript - 算术加法 (+) 在 ng-bind 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32478738/

相关文章:

javascript - 为什么 typeof null 的值会在循环内发生变化?

javascript - 如何正确验证 AngularJS 中的非输入选择器?

javascript - data-ng-bind 不适用于 <option> 元素

javascript - 使用 ES6 原型(prototype)方法 map 在 React 中不渲染任何内容

Javascript正则表达式选择多个

javascript - 如何使用引导标签输入进行选择

angularjs - 如何限制AngularJS中ng-bind-html的字符数?

javascript - IE11 中的 pdf.js 错误,src 属性 (0x800a138f)

javascript - 使用 ng-repeat 从 angularjs 中的 http 响应数组中检索数据

javascript - AngularJS 绑定(bind)选项的性能