2014-01-14 2 views
0

나는 다음과 같은 코드가 있습니다나는 정의를 확인하기 위해 노력하고 있지만, 제대로 동작하지 않습니다

$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 필드가 비어있을 때) 나는 구글의 개발 도구와 PID 확인 "undefined"로 표시됩니다. 그러나 코드가 실행될 때 첫 번째 조건으로 들어 가지 않습니다. 오히려 두 번째로 이동하고 말하는 오류를 제공합니다 :

형식 오류 : 개체 번호가있는 방법 '같이 IndexOf'

누군가가 문 경우 처음 무시 이유를 말해 줄 수가 없다?

console.log(typeof pid) 
object 
undefined 
+0

정의되지 않은 경우 첫 번째 조건이됩니다. * 완전한 * 감소 된 테스트 케이스를 만들어서 문제를 볼 수있게하십시오. – Quentin

+1

오류 메시지를 보면서 두 번째 조건으로 간다. 실제로 정의되었지만'indexOf'라는 메서드가 없다고 생각할 것이다. (문자열이나 배열이 아님을 의미한다.) devtools에서 변수를 확인할 때 올바른 범위 안에 있는지 확인 하시겠습니까? 'console.log (typeof pid)'할 수 있습니까? – SoonDead

+0

@SoonDead - 콘솔 로그를 작성하고 질문을 업데이트했습니다. – Melina

답변

1

Here is what I get when I use the console to check pid on the first line with an if:

console.log(typeof pid) 
object 
undefined 

이 유형 말한다 여기

은 내가하면 것은 함께 첫 번째 줄에 PID를 확인하기 위해 콘솔을 사용할 때 내가 무엇을 얻을 pid의 값은 이고 개체는입니다. 이면console.log()의 반환 값은 undefined이라고 말합니다.

변수가 예상대로 정의되지 않았으므로 첫 번째 변수는 if이 아닙니다.

어떤 종류의 객체 pid이든, indexOf 메서드를 가진 객체가 아니기 때문에 실패합니다.

-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; 
      } 
관련 문제