2016-06-08 2 views
0

저는 공장 서비스가 있으며 여기에 getCount 메소드가 있습니다. 내 컨트롤러에서이 메서드를 호출하면 null이 반환되지만 콘솔에 데이터를 인쇄하여 팩토리 서비스에서 테스트했습니다. 그것은 콘솔에 데이터를 표시하지만 내 컨트롤러에 어떤 값도 반환하지 않습니다. 내 컨트롤러에서각도 팩토리는 null을 반환하지만 콘솔에 결과를 표시합니다.

obj.getCount = function(table, field) { 
     var query = "select count(" + field + ") as total from " + table + ""; 
     $db.query(query).then(function(results) { 
      console.log(results.rows.item(0).total); // here show data in console 
      if (results.rows.item(0).total) { 
       return results.rows.item(0).total; 
      } else { 
       return 0; 
      } 

     }); 
    } 

$scope.totalAccount=DBFactory.getCount('accounts','id'); 
+0

$의 db.query (쿼리) :

obj.getCount = function(table, field) { var query = "select count(" + field + ") as total from " + table + ""; return $db.query(query).then(function(results) { if (results.rows.item(0).total) { return results.rows.item(0).total; } else { return 0; } }); } 

그런 다음에 컨트롤러 코드를 변경 . 그럼 비동기 함수, 그래서 당신은 우리가 할 수 없어 결과를 얻기 위해 돌아온다면 Promise를 사용할 수 있습니다. –

답변

2

돌아 가기 때문에 같은 $db.query.then :

DBFactory.getCount('accounts','id').then(function(data) { 
    $scope.totalAccount = data; 
}); 
관련 문제