javascript - AngularJS 从 SQLite 数据库中填充选择下拉列表

标签 javascript angularjs database sqlite

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

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

我创建了 SQLite 数据库和表并向其中插入值,所有这一切都正常工作 - 下面是我的 View app.js Controller 中的 CREATE 和 INSERT 示例代码。

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 数据库的结果,以便在我的 View 中访问它。

$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]
}

在我的 View 中,我有一个选择下拉框,我想用来 self 的 SQLite 数据库 name 列的值填充下拉项.

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

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

我可以像这样直接访问 name 值,还是需要先从 SQLite 转换为 JSON?

最佳答案

你可以像这样从响应中创建一个普通的数组对象

 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"

关于javascript - AngularJS 从 SQLite 数据库中填充选择下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38243513/

相关文章:

javascript - 添加到函数对象时属性在哪里

javascript - 在不同的 attr 中定义的指令 attr 内的回调函数

xml - 如何从 FLOWR xquery 指定 BaseX 数据库?

AngularJS/CORS OPTIONS 请求和性能

node.js - 如何补救 "Error: Cannot find module ' child-process-close'"?

sql - 如何有效地记录数据库(表,属性定义)?

MySQL:为按日期分组的最大值选择相应的行

javascript - 用 <span class "Rs."> 包装文本 ="someClass"的每一次出现

javascript - 无法检索数据以在浏览器中显示

javascript - 我正在尝试制作一个程序,当按下 "a"键时会闪烁图像