Ionic和SQLite等到加载数据库信息

时间:2016-10-03 08:16:09

标签: sqlite ionic-framework

我在Ionic上有一个项目,我需要在主页上呈现数据库的一些信息,比如TODO程序。

我已经掌握了有关数据库的一些信息,我试图渲染项目列表,但我有下一个问题:

  • 首先加载主页但没有任何结果
  • 然后加载数据库中的数据并将其打印在屏幕上

问题是我希望视图等到加载数据库信息直到显示任何内容,我想知道我是否可以使用某种加载图标。

我已经按照这里的答案: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

1 个答案:

答案 0 :(得分:0)

最后,我根据路线中使用resolve的建议找到了解决方案。

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

我有一个名为DB的工厂,我有一些函数可以从数据库中检索数据。在此示例中,我使用DB.getTasks()

在输入URL之前加载任务

要加载路径上已解析的变量任务,我必须在函数上添加变量名称,如下所示:

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

    $scope.tasks = tasks;
})