2016-04-21 46 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)); 
    } 
);