Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在AngularJS模板HTML中检查数字_Javascript_Angularjs - Fatal编程技术网

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。为什么?很有趣,我不知道这件事。我已快速搜索并修改了答案。