angular.isNumber无法正常工作

时间:2014-05-21 16:48:05

标签: angularjs

在我的路由控制器中,我有以下代码:

console.log('quantaryNav:' + $routeParams.quantaryNav);

// quantaryNav
if ($routeParams.quantaryNav!= "" && $routeParams.quantaryNav!= undefined) {
    console.log('result: ' + angular.isNumber($routeParams.quantaryNav ));
}

控制台日志:

quantaryNav :12 
result :false

有没有办法确定路由参数是否是控制器中的数字?

发布脚本:   这工作

     console.log('raw: ' + angular.isNumber(12));

     raw: true 

但显然我不能硬编码这个值。

感谢mpm的作用:

  console.log('quantaryNav!!: ' + angular.isNumber(+($routeParams.quantaryNav)));

    quantaryNav!!: true
    quantaryNav :12 

2 个答案:

答案 0 :(得分:1)

这似乎是因为该值实际上是一个字符串,意味着将值转换为数字。但是,在使用angular.isNumber之前转换值时,所有值都将返回true,因为angular.isNumber包含" special"数字NaN,+ Infinity和-Infinity,这是非数字值转换为的数字。我的答案是使用isFinite。这是有效的,因为我需要它而不需要铸造。

isFinite($routeParams.quantaryNav)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite

答案 1 :(得分:-1)

angular.isNumber(+($routeParams.quantaryNav))

试试

$ routeParams.quantaryNav可能会出现一个字符串,所以你需要"施放"无论如何,如果你的应用需要一个号码。