cordovaSQLite无法正常工作,错误:undefined不是对象(评估'n.transaction')

时间:2016-01-06 09:48:29

标签: javascript sqlite ionic-framework ionic

这是我确定导致问题的代码部分:

angular.module('starter.controllers', []).controller('StudentsCtrl', function ($scope, $cordovaSQLite) {

  var query = "SELECT id, student_id, username FROM students";
  var users = [];

  $cordovaSQLite.execute(db, query).then(function (data) {
    $.each(data, function(i, item) {
      users.push(item);
    });
  });

  $scope.users = users;
});

我已将$cordovaSQLite的必要文件包含在内。以上代码位于www/js/controllers.js内,作为默认Ionic选项卡项目的一部分。 $cordovaSQLitewww/js/app.js内工作得很好,并且在www/js/controllers.js的另一部分也可以正常工作,但上面的代码部分会返回此错误:

0     610246   error    Error: undefined is not an object (evaluating 'n.transaction')

更新:此功能中$cordovaSQLite似乎等于undefined,但我不确定为什么会发生这种情况。

1 个答案:

答案 0 :(得分:1)

您的代码在Cordova deviceready事件触发之前正在运行。在使用任何设备功能(如插件)之前,您需要等待它。在Ionic中,如果你在控制器中使用$ ionicPlatform,你可以这样做:

$ionicPlatform.ready(function() {

作为一种包装需要等待的代码的方法。试试这个:



angular.module('starter.controllers', []).controller('StudentsCtrl,$ionicPlatform', function ($scope, $cordovaSQLite) {

  $ionicPlatform.ready(function() {
    var query = "SELECT id, student_id, username FROM students";
    var users = [];

    $cordovaSQLite.execute(db, query).then(function (data) {
      $.each(data, function(i, item) {
        users.push(item);
      });
    });

    $scope.users = users;
    
   });
  
});