我使用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?
答案 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"