将sqlite查询结果添加到angularjs $ scope

时间:2014-07-01 10:05:42

标签: javascript angularjs sqlite

我在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.

1 个答案:

答案 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);
}