2014-07-01 3 views
0

У меня этот запрос sqlite в приложении angularjs.

$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

вы можете настроить http://jsfiddle.net –

ответ

0

Я предлагаю вам use a service.

Причина, по которой она сейчас не работает, потому что, когда вы пытаетесь распечатать результаты, она все еще не заполнена. вы можете добавить $ watch над результатами и работать с ним, когда он заселен.

$scope.testFunk(); // modify $scope.results within the function 

$scope.$watch('results', function(resultsNewVal, resultsOldVal) { 
    console.log(resultsNewVal); 
} 
+0

Хорошо, спасибо, мне потребуется некоторое время, чтобы пройти через код в связанном ответ, но в вашем фрагменте кода, что бы resultsNewVal и resultOldVal представляют в моем примере? – user3345564

+0

в первый раз, когда вы запускаете testFunk, oldVal будет пустым, а newVal - это новое значение, толкаемое whitin в функцию testFunk –

Смежные вопросы