Sqlite-无法返回所选数据angularjs服务
在我的爱奥尼亚应用程序中。我创建了一个名为webservice的服务,使用angularjs从sqlite数据库检索数据。它正确选择数据并在控制台中获得结果,工作正常,但总是返回未定义的 这是我的示例代码:Sqlite-无法返回所选数据angularjs服务,angularjs,sqlite,ionic-framework,Angularjs,Sqlite,Ionic Framework,在我的爱奥尼亚应用程序中。我创建了一个名为webservice的服务,使用angularjs从sqlite数据库检索数据。它正确选择数据并在控制台中获得结果,工作正常,但总是返回未定义的 这是我的示例代码: app.factory('webservice',function($http,$cordovaSQLite,$q){ var obj = {}; obj.getNote = function(){ var query = "SELECT subject
app.factory('webservice',function($http,$cordovaSQLite,$q){
var obj = {};
obj.getNote = function(){
var query = "SELECT subject, note FROM notes";
var q = $q.defer();
$cordovaSQLite.execute(db, query).then(function(res) {
if(res.rows.length > 0) {
var data = res.rows;
console.log(data); //Result - Working..
q.resolve(res.rows); //Result - Undefined..
return data; //Result - Undefined..
} else {
console.log("No results found");
return false;
}
}, function (err) {
console.error(err);
});
}
return obj;
});
app.controller('noteCtrl', function($scope,$state,webservice){
$scope.getNote = function(){
console.log(webservice.getNote()); // Undefined.
}
});
这是我的控制器:
app.factory('webservice',function($http,$cordovaSQLite,$q){
var obj = {};
obj.getNote = function(){
var query = "SELECT subject, note FROM notes";
var q = $q.defer();
$cordovaSQLite.execute(db, query).then(function(res) {
if(res.rows.length > 0) {
var data = res.rows;
console.log(data); //Result - Working..
q.resolve(res.rows); //Result - Undefined..
return data; //Result - Undefined..
} else {
console.log("No results found");
return false;
}
}, function (err) {
console.error(err);
});
}
return obj;
});
app.controller('noteCtrl', function($scope,$state,webservice){
$scope.getNote = function(){
console.log(webservice.getNote()); // Undefined.
}
});
所以请尝试为我找到好的解决方案
谢谢大家! 两件事。首先,您没有从服务返回承诺对象,其次,您没有在控制器中调用then函数。请尝试以下代码:
app.factory('webservice',function($http,$cordovaSQLite,$q){
var obj = {};
obj.getNote = function(){
var query = "SELECT subject, note FROM notes";
var q = $q.defer(); //this is your deferred object
$cordovaSQLite.execute(db, query).then(function(res) {
if(res.rows.length > 0) {
var data = res.rows;
console.log(data); //Result - Working..
q.resolve(res.rows); //Result - Undefined..
return data; //Result - Undefined..
} else {
console.log("No results found");
q.reject("No results found");
return false;
}
}, function (err) {
q.reject(err);
console.error(err);
});
return q.promise; //This line was missing
}
return obj;
});
在控制器中,执行以下操作:
app.controller('noteCtrl', function($scope,$state,webservice){
$scope.getNote = function(){
webservice.getNote().then(
function(res){ //success callback
console.log(res); //this should be the resolved object
},
function(err){ //error callback
console.log(err); //this should be the rejected object
});
}
});
两件事。首先,您没有从服务返回承诺对象,其次,您没有在控制器中调用then函数。请尝试以下代码:
app.factory('webservice',function($http,$cordovaSQLite,$q){
var obj = {};
obj.getNote = function(){
var query = "SELECT subject, note FROM notes";
var q = $q.defer(); //this is your deferred object
$cordovaSQLite.execute(db, query).then(function(res) {
if(res.rows.length > 0) {
var data = res.rows;
console.log(data); //Result - Working..
q.resolve(res.rows); //Result - Undefined..
return data; //Result - Undefined..
} else {
console.log("No results found");
q.reject("No results found");
return false;
}
}, function (err) {
q.reject(err);
console.error(err);
});
return q.promise; //This line was missing
}
return obj;
});
在控制器中,执行以下操作:
app.controller('noteCtrl', function($scope,$state,webservice){
$scope.getNote = function(){
webservice.getNote().then(
function(res){ //success callback
console.log(res); //this should be the resolved object
},
function(err){ //error callback
console.log(err); //this should be the rejected object
});
}
});
谢谢,它很有效。但是当我在视图中使用ng repeat时,我得到了以下错误
[$rootScope:infdig]10$digest()迭代。流产代码>您能告诉我如何修复此问题吗?谢谢,它可以正常工作。但是当我在视图中使用ng repeat时,我得到了以下错误[$rootScope:infdig]10$digest()迭代。流产你能告诉我怎么解决这个问题吗?