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