AngularJS填充SQLite数据库

时间:2016-07-07 10:47:33

标签: javascript angularjs database sqlite

我使用AngularJS,Monaca和Onsen UI创建了一个跨平台应用程序。

我创建了一个SQLite数据库,用于在应用程序中本地存储信息,以便随时离线使用。

我创建SQLite数据库和表并在其中插入值,所有这些都正常工作 - 下面为CREATE和INSERT的示例代码构建我的视图 app.js controller

app.js

function createDB(tx)
{
    tx.executeSql('DROP TABLE IF EXISTS tb_my_list');
    tx.executeSql('CREATE TABLE IF NOT EXISTS tb_my_list (id INTEGER PRIMARY KEY, name, score)');

    tx.executeSql('INSERT INTO tb_my_list (id, name, score) VALUES (01, "Name 1", 111)');
    tx.executeSql('INSERT INTO tb_my_list (id, name, score) VALUES (02, "Name 1", 222)');   
}

然后我声明一个变量来保存SQLite数据库的结果,以便在视图中访问它。

$scope.DatabaseData = [];

function queryDB(tx)
{
    tx.executeSql('SELECT * FROM tb_my_list', [], querySuccess, errorCB);
}

function querySuccess(tx, results)
{
    var len = results.rows.length; // Shows "2" - as INSERTED values
    $scope.databaseData = results; // Returns [object SQLResultSet]
}

在我的视图中,我有一个选择下拉框,我想用我的SQLite数据库名称列填充下拉项目

我尝试使用 ng-options ,但下拉列表中没有显示任何值。以下是我的观点选择我尝试填充值的位置。

<select ng-model="myDataDropDown" ng-options="databaseData.id as databaseData.name for databaseData in DatabaseData"><option value="" label="-- Please Select --"></option></select>

我可以直接访问名称这样的值,还是首先需要从SQLite转换为JSON?

1 个答案:

答案 0 :(得分:1)

您可以像这样

从响应中创建一个普通的数组对象
 function querySuccess(tx, results)
{
    var len = results.rows.length; 
    var output_results = [];

    for (var i=0; i<len; i++){
       var theItem = results.rows.item(i);
       output_results.push(theItem.name);
    }
    $scope.databaseData = output_results;
}

然后使用像这样的简单ngoption

ng-options="item for item in databaseData

但是,如果您想在列表中使用名称值对,那么......它的位不同。

 function querySuccess(tx, results)
{
    var len = results.rows.length; 
    var output_results = [];

    for (var i=0; i<len; i++){
       var theItem = results.rows.item(i);
       output_results.push({id: theItem.id,'name': theItem.name});
    }
    $scope.databaseData = output_results;
}

然后使用像这样的复杂ngoption

ng-options="option.name for option in databaseData track by option.id"