在我的路由控制器中,我有以下代码:
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
答案 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可能会出现一个字符串,所以你需要"施放"无论如何,如果你的应用需要一个号码。