0

내 상태를 정의 할 때 resolve를 사용하여 내보기를로드하기 전에 SQLite DB에서 데이터를로드하려고합니다. 각도 ui-router 해결 약속 무한 다이제스트 루프 제공

현재 : UI 라우터 상태

.state("menu", { 
    templateUrl: "templates/menu.html", 
    controller: "MenuCtrl", 
    url: "/menu", 
    resolve:{ 
     simpleObj: function(){ 
      return {value: 'simple!'}; 
     }, 
     promiseObj: function($cordovaSQLite){ 
      query = "SELECT id FROM reports WHERE progress_status<2"; 
      $cordovaSQLite.execute(db, query, []).then(function(res) {     
       var pendingList = []; 
       for (var i = 0; i < res.rows.length; i++) { 
       pendingList.push(res.rows.item(i).id); 
       } 
       return pendingList; 
      }); 
     } 
     } 

}) 

컨트롤러

angular.module('starter.controllers').controller('MenuCtrl', function($scope, promiseObj) { 

    console.log(JSON.stringify(promiseObj)); 

}); 

그러나이 코드 내게 다이제스트 무한 루프를 제공한다. 나는 일반적으로 DB는 (같은 결과를 제공)하지만, 시험을 위해 인라인 이사 서비스에서 코드를 실행 한

내가 제대로이 작업을 수행하는 방법

사람이 말해 줄래?

업데이트 : 그래서

오류 메시지 :

02-04 12 : 07 : 03.520 : D/CordovaLog (7773) : 파일 : /// android_asset/www가/lib 디렉토리/이온/JS/ionic.bundle.js : Line 19387 : 오류 : [$ rootScope : infdig] 10 $ digest() 반복에 도달했습니다. 중단합니다! 07 :

02-04 03.520 12 : D/CordovaLog (7773)의 마지막 5 반복 소성 관찰자 : []

02-04 12 : 07 : 03.520 : D/CordovaLog (7773) : http://errors.angularjs.org/1.3.6/ $ rootScope/infdig? P0 = 10 & P1 = % 5B % 5D

당신은 &은 다음 컨트롤러 내부에 액세스 할 수 있습니다 서비스에서 약속을 반환해야
+0

이것이 문제이지만'execute()'가 약속을 되 돌리는 지 확실하지 않으면 해결 함수가 약속을 반환해야합니다. –

답변

0

. UI-Router DOCS

promiseObj: function($cordovaSQLite, $q) { 
     var deferred = $q.defer(); 
     query = "SELECT id FROM reports WHERE progress_status<2"; 
     $cordovaSQLite.execute(db, query, []).then(function(res) {     
      var pendingList = []; 
      for (var i = 0; i < res.rows.length; i++) { 
      pendingList.push(res.rows.item(i).id); 
      } 
      deferred.resolve(pendingList); 
     }); 
     return deferred.promise; 
    } 

컨트롤러이 당신에게 도움이 할 수

angular.module('starter.controllers').controller('MenuCtrl', function($scope, promiseObj) { 
    //here the promise get available 
    $scope.promiseObj = promiseObj; 

    $scope.promiseObj.then(function(data){ 
    $scope.pendingList = data; //get pending here 
    }); 

}); 

에 약속을 해결합니다. 감사.

+0

안녕하세요, 귀하의 답변에 감사드립니다. 불행하게도이 코드는 유한 다이제스트 루프를 초래합니다. 문제가 무엇인지 다른 생각을 가지고 있습니까? 덕분에 –

+0

어떻게 해결 서비스 내에서 액세스하고 있습니까? –

+0

$ cordovaSQLite에서 무슨 일이 일어나고 있다는 뜻입니까? 그건 제 3 자 플러그인입니다. $ cordovaSQLite가 약속 자체를 반환한다는 사실과 관련이있을 수 있습니다. 아마도 약속을 되 돌리는 약속일까요? 어떤 생각이든 반가워 함 –

0

내 응용 프로그램에 오류가 발생하는 경우에 발생할 수 있습니다 (제 경우에는 각도 파이어에 대한 종속성이 있지만, firebase.js를 내 응용 프로그램에 포함하는 것을 잊어 버렸습니다). 해결 방법을 사용하고 있으므로 실제 오류가 표시되지 않으며이 무한한 다이제스트 오류가 표시됩니다.

내 경험에 비추어 볼 때, 앱에 실행 중 해결을 방해하는 오류가있는 것으로 추측됩니다.