我在angularjs应用程序中有这个sqlite查询。
$scope.testArr = [];
$scope.testFunk = function(){
var db = window.openDatabase("test", "1.0", "Test DB", 1000000);
db.transaction(function(tx){
tx.executeSql('SELECT * FROM EVENTS',
[],
//Callback function with transaction and
//results objects
function(tx, results){
//Count the results rows
var rowsCount = results.rows.length;
//Loop the rows
for (var i = 0; i < rowsCount; i++){
//Build a results string, notice the
//column names are called
$scope.testArr.push({
id: results.rows.item(i).eventId,
nameSel: results.rows.item(i).eventNameSel,
name: results.rows.item(i).eventName,
eventDesc: results.rows.item(i).eventDesc,
eventUrl: results.rows.item(i).eventUrl,
time: results.rows.item(i).eventTime
})
}
console.log($scope.testArr);
},
errorHandler);
});
}
//
console.log
返回正确的对象,但如果我在console.log
函数之外执行db.transaction
,则返回空。问题是我想调用$scope.testFunk()
函数并将查询结果返回给变量,然后我可以进一步处理,如:
var result = $scope.testFunk();
console.log(result);
// prints results from query.
答案 0 :(得分:0)
我建议您use a service。
它现在无法正常工作的原因是因为当您尝试打印结果时,它仍然没有填充。你可以添加$ watch over results并在填充时使用它。
$scope.testFunk(); // modify $scope.results within the function
$scope.$watch('results', function(resultsNewVal, resultsOldVal) {
console.log(resultsNewVal);
}