2015-02-03 1 views
0
내 컨트롤러에 다음 함수를 호출하고

: 나는 그것을 실행하면개체 # <Scope> 오류

   try 
       { 
        alert('it works!'); 
        $scope.insert('John', 'Doe'); 
       } 
       catch(err) 
       { 
        alert('err=' + err); 
       } 

$scope.insert = function(firstname, lastname) { 
     var query = "INSERT INTO people (firstname, lastname) VALUES (?,?)"; 
     $cordovaSQLite.execute(db, query, [firstname, lastname]).then(function(res) { 
      console.log("INSERT ID -> " + res.insertId); 
     }, function (err) { 
      console.error(err); 
     }); 
    } 

이, 때로는 작동을하고 데이터를 추가하고 때로는 다음과 같은 오류 얻을 :

err=TypeError: Object #<Scope> has no method 'insert' 

이 오류는 꽤 흔한 것을 보았습니다. 그러나 실제로이 삽입이 작동 할 때이 샘플에 적용되는 답변을 찾지 못했습니다.

답변

1

표현식을 사용하여 함수를 선언하기 때문에 $scope.insert()이 정의되기 전에 호출되므로 catch 블록을 시도하기 전에 함수 삽입 정의를 이동해야합니다.

당신은 당신도 우리가 그 순서를 변경하지 않는 시도의 catch 블록 전에 정의 될 수

function insert(firstName, lastName) { ... } 

기능 insert로 함수를 삽입 정의 그러나합니다.

+0

몇 초 전에 내 자신의 질문에 대답 :) :) 어쨌든 덕분에 – carol1287

+0

기능 업데이트에 대한 자세한 내용은 내 업데이 트를 확인하십시오. @ carol1287 – Rebornix

0

내가 방금 $scope.insert('John', 'Doe');을 선언 한 후에 이동 한 것 같습니다. 이제는 오류가 발생하지 않습니다. :) 그것은 쉬운 수정이었다!

관련 문제