Javascript 如何在AngularJS模板HTML中检查数字
奇怪的事情发生了,我不知道为什么 在我对某些条件的应用程序中,某些值被传递为未定义 所以,如果一个变量是这样计算的Javascript 如何在AngularJS模板HTML中检查数字,javascript,angularjs,Javascript,Angularjs,奇怪的事情发生了,我不知道为什么 在我对某些条件的应用程序中,某些值被传递为未定义 所以,如果一个变量是这样计算的 selectedPricingMappingObj.forEach(function(server){ ..... ..... vm.totalOfCostCalculationItems += server.details.price; 其中,price是未定义的 当价格未定义时,它会显示NaN 但是当price定义为时, angular.isNumbe
selectedPricingMappingObj.forEach(function(server){
.....
.....
vm.totalOfCostCalculationItems += server.details.price;
其中,price
是未定义的
当价格未定义时,它会显示NaN
但是当price
定义为时,
angular.isNumber(vm.totalOfCostCalculationItems)返回
true`
但是当我在UI
中尝试同样的方法时
<td style="text-align:left;"
ng-if="angular.isNumber(vm.totalOfCostCalculationItems)">
<b>${{vm.totalOfCostCalculationItems.toFixed(2)}}<b>
</td>
${vm.totalOfCostCalculationItems.toFixed(2)}
什么也看不出来。为什么会这样?角度。如果角度不是$scope
的一部分,则isNumber
在ng中不起作用。它只是一个全局变量。如果确实需要在视图中使用angular.isNumber
,则需要将其作为ViewModel的一部分:
控制器
vm.isNumber=angular.isNumber代码>
查看
编辑
为了回答注释中出现的关于angular.isNumber(NaN)
返回true的问题,我快速搜索并找到以下内容:。虽然这对我来说也有点不合逻辑,但这种行为似乎与JavaScript标准一致,因为typeof NaN===“number”
也被解析为true。如果要避免这种行为,需要同时使用angular.isNumber
和检查数字!伊斯南
:
vm.isNumber = function(number) {
return angular.isNumber(number) && !isNaN(number);
}
为什么不使用parseInt将其转换为数字,而不是添加检查?如果它在控制台中显示为NaN
,但如果它显示为vm.isNumber(vm.totalOfCostCalculationItems)
则显示为true。为什么?很有趣,我不知道这件事。我已快速搜索并修改了答案。