2016-04-21 86 views
0

我有一点问题,

我试图从我SQLite数据库DATAS,功能是否正常工作,

我只是有一个问题,当我需要恢复我的DATAS

这是我做过什么:

 $scope.facilityDatas = {}; 


    dataBaseService.getFacilityById($stateParams.facilityId,function (data) { 
    $scope.facilityDatas = angular.copy(data); 
    console.log ('facility json : '+ angular.toJson($scope.facilityDatas)); 
    }); 

数据VAR包含包含了我的请求结果的数据阵列。我在我的服务测试,一切都很好。现在我只需要使$ scope.facilityDatas = data,但它不工作...

我需要承认我有点失落。我几乎肯定这是什么,但我不知道该怎么办...

希望你会发现什么是错的。

问候

编辑

这里是我的数据库功能:

getFacilityById: function(id,callback){ 

      var data = []; 
      $cordovaSQLite.execute(db,'select * from FACILITIES where facilities_id = ?',[id]).then(function (results){ 
       console.log(angular.toJson(results.rows.item(0))); 

       for (var i = 0, max = results.rows.length; i < max; i++) { 

        data.push(results.rows.item(i)) 

       } 

      }) 



      callback(data); 

     }, 
+0

您可以添加您dataBaseService。 getFacilityById方法?这将有助于了解您的回复格式。 –

+0

你可以做一个重拳吗? – DanEEStar

+0

[我如何从异步调用返回响应?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Grundy

回答

1

您之前$cordovaSQLite.execute完成呼叫callback,让您得到空数组。

移动这里面调用then

getFacilityById: function(id,callback){ 
    var data = []; 
    $cordovaSQLite.execute(db,'select * from FACILITIES where facilities_id = ?',[id]).then(function (results){ 
     console.log(angular.toJson(results.rows.item(0))); 
     for (var i = 0, max = results.rows.length; i < max; i++) { 
      data.push(results.rows.item(i)) 
     } 
     callback(data); 
    }); 
}, 

甚至退货的承诺,并直接使用它,这样

getFacilityById: function(id,callback){ 
    var data = []; 
    return $cordovaSQLite.execute(db,'select * from FACILITIES where facilities_id = ?',[id]).then(function (results){ 
     console.log(angular.toJson(results.rows.item(0))); 
     for (var i = 0, max = results.rows.length; i < max; i++) { 
      data.push(results.rows.item(i)) 
     } 
     return data; 
    }); 
}, 

,并用它作为

$scope.facilityDatas = {}; 

dataBaseService.getFacilityById($stateParams.facilityId).then(
    function (data) { 
     $scope.facilityDatas = angular.copy(data); 
     console.log ('facility json : '+ angular.toJson($scope.facilityDatas)); 
    } 
);