1
因此,我創建了一個工廠來查詢數據庫並返回數據。在該方法內部,我可以打印到控制檯。但是當我檢查控制器內部的返回數據時,它是空的,請查看下面的代碼,看看你能否提供幫助。Ionic不會將sql數據從工廠返回給控制器
這裏是工廠
rs.factory("userService",function($http,$ionicLoading,$cordovaProgress,$cordovaSQLite,$q){
var user = {};
/**get user data */
user.getData = function(){
//stores from the local database
var userData = [];
var query = "SELECT * FROM users";
$cordovaSQLite.execute(db, query, []).then(function(res) {
for (var i=0; i < res.rows.length; i++){
userData.push(res.rows.item(i));
}
console.log("User Data : " + JSON.stringify(userData));//this works
}, function (err) {
console.error(err);
})
return userData;
};
return user;
});
控制器:
angular.module('starter.controllers', [])
.controller('AppCtrl', function($scope, $ionicModal, $timeout, $http, $state, $cordovaSQLite,$ionicNavBarDelegate,userService) {
console.log(userService.getData()); // is empty
})
沒有在這裏返回。
我有一個問題有關。簡短的解釋:所有的數據庫操作都是異步檢查http://stackoverflow.com/questions/39563879/sqlite-plugin-for-cordova-code-running-backwards – MikeVelazco