算术加法 (+) 在 ng-bind 中不起作用
Arithmetic addition (+) is not working in 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>
为什么不能使用 Number(...) 使字符串成为 Angular 表达式中的数字
使用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;
在你的控制器中,然后在你的表达式中使用它。其他全局 window 属性也是如此。
纠正你的表情:
<td ng-bind="(objData.pendingCount +objData.refundCount)/ (objData.saleCount * 100).toFixed(2)"></td>
缺少左括号
我用
解决了
<td ng-bind="(sum(objData.pendingCount,objData.refundCount)/objData.saleCount*100).toFixed(2)"></td>
并在控制器中
$scope.sum = function (a, b) {
return parseInt(a) + parseInt(b);
}
它工作正常。
有一个对象具有
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>
为什么不能使用 Number(...) 使字符串成为 Angular 表达式中的数字
使用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;
在你的控制器中,然后在你的表达式中使用它。其他全局 window 属性也是如此。
纠正你的表情:
<td ng-bind="(objData.pendingCount +objData.refundCount)/ (objData.saleCount * 100).toFixed(2)"></td>
缺少左括号
我用
解决了<td ng-bind="(sum(objData.pendingCount,objData.refundCount)/objData.saleCount*100).toFixed(2)"></td>
并在控制器中
$scope.sum = function (a, b) {
return parseInt(a) + parseInt(b);
}
它工作正常。