我有一个工厂服务,这里有一个方法getCount。当我在控制器中调用此方法时,它返回null但我已在工厂服务中通过在控制台中打印数据进行测试。它在控制台中显示数据但不向控制器返回任何值。
obj.getCount = function(table, field) {
var query = "select count(" + field + ") as total from " + table + "";
$db.query(query).then(function(results) {
console.log(results.rows.item(0).total); // here show data in console
if (results.rows.item(0).total) {
return results.rows.item(0).total;
} else {
return 0;
}
});
}
在我的控制器中
$scope.totalAccount=DBFactory.getCount('accounts','id');
答案 0 :(得分:2)
像这样返回$db.query.then
:
obj.getCount = function(table, field) {
var query = "select count(" + field + ") as total from " + table + "";
return $db.query(query).then(function(results) {
if (results.rows.item(0).total) {
return results.rows.item(0).total;
} else {
return 0;
}
});
}
然后将您的控制器代码更改为:
DBFactory.getCount('accounts','id').then(function(data) {
$scope.totalAccount = data;
});