我有以下代码:
$scope.$watch("pid", _.debounce(function (pid) {
var a = pid;
$scope.$apply(function (pid) {
if (typeof pid == "undefined" || pid == null || pid === "") {
$scope.pidLower = null;
$scope.pidUpper = null;
}
else if (pid.indexOf("-") > 0) {
pid = pid.split("-");
$scope.pidLower = parseInt(pid[0]);
$scope.pidUpper = parseInt(pid[1]);
}
else {
$scope.pidLower = parseInt(pid);
$scope.pidUpper = null;
}
});
}, 1000));
第一次运行代码(当pid字段为空时)我使用google开发工具检查pid,它显示为“未定义”。但是,当代码运行时,它不会进入第一个if条件。相反,它转到第二个,并给出一个错误说:
TypeError:Object#没有方法'indexOf'
有人能告诉我为什么它会忽略第一个if语句吗?
以下是我使用控制台通过if:
检查第一行的pid时得到的结果console.log(typeof pid)
object
undefined
答案 0 :(得分:0)
以下是我使用控制台通过if:
检查第一行的pid时得到的结果console.log(typeof pid) object undefined
这表示pid的类型是对象。 然后表示console.log()
的返回值为undefined
。
它不会进入第一个if
,因为变量不是,如你所想,未定义。
然后失败,因为无论对象pid
是什么类型,它都不是indexOf
方法的对象。
答案 1 :(得分:-1)
试试这个:
if (!pid) {
$scope.pidLower = null;
$scope.pidUpper = null;
}
else if (pid.indexOf("-") > 0) {
pid = pid.split("-");
$scope.pidLower = parseInt(pid[0]);
$scope.pidUpper = parseInt(pid[1]);
}
else {
$scope.pidLower = parseInt(pid);
$scope.pidUpper = null;
}