2016-10-03 63 views
0

我有一个Ionic项目,我需要在主页上呈现数据库的一些信息,比如TODO程序。离子和SQLite等到数据库信息加载

我已经在数据库上的一些信息,我想呈现的项目清单,但我有一个问题:

  • 第一家庭页面加载,没有任何结果
  • 然后从数据库中的数据被加载并显示在屏幕

的问题是我想要的看法等到数据库信息被加载,直到显示任何有关,我想知道如果我可以使用某种类型的加载图标的。

我已经按照这里的答案:Open database before main controller is called in Ionic and SQlite

我有数据库初始化工作,但正如我已经说过,视图渲染后数据被加载。

我一直在使用$ionicLoading尝试,但我没有得到任何好的结果

这是我的看法:

.controller('homeCtrl', function ($scope, $state, $cordovaSQLite, DB) { 
    $scope.$on('$ionicView.enter', function() { 
     tasks = [] 
     var query = "SELECT * FROM task;"; 

     $cordovaSQLite.execute(DB.db, query, []).then(function(results) { 
      if(results.rows.length > 0) { 
       for (i=0; i<results.rows.length; i++){ 
        console.log("SELECTED -> " + results.rows.item(0).title);  
        $scope.tasks.push(results.rows.item(i)) 
       }      
      } else {      
       console.log("No results found"); 
      } 
     }, function (err) { 
      $scope.tasks = []; 
      console.error(err); 
     }); 
     $scope.tasks = tasks; 
    }); 

}) 

这是我在现在这个问题的视频例如:

https://youtu.be/H2fUYQuV3xg

+0

有你:在这个例子中,我进入使用DB.getTasks()

要加载可变任务解决途径我要补充上这样的功能变量名称对应的URL之前加载任务尝试解决路线? –

+0

你是什么意思? – AlvaroAV

+0

也许你可以在你的路由中使用解析,调用一个服务,你可以从数据库中获取数据..因为它会在进入视图之前先执行..也许它会解决问题(Y)只是一个猜测。没有尝试自己 –

回答

0

最后我发现下面的在我的路线使用的决心的建议的解决方案。

.state('home', { 
    url: '/', 
    templateUrl: 'templates/home.html', 
    controller: 'homeCtrl', 
    resolve: { 
     tasks: function(DB) { 
       return DB.getTasks(); 
        }); 
     } 
    } 
}) 

我有一个叫DB的工厂,我有一些函数可以从数据库中检索数据。

app.controller('homeCtrl', function (tasks) { 

    $scope.tasks = tasks; 
})