我正在尝试在加载控制器时从本地存储SQLite数据库表中动态填充数组。
我有几个Arrays定义如下(显示小样本):
$scope.myArray1 = [];
$scope.myArray2 = [];
然后,我创建一个具有表名/数组名称关联的数组,例如应查询 my_table_1 ,然后将其写入 $ scope.myArray1 。如下所示(显示小样本):
$scope.tableArrayAssociation = [{
tablename: "my_table_1",
arrayname: "myArray1"
}, {
tablename: "my_table_1",
arrayname: "myArray2"
}];
为此,我有一个函数调用SQLite本地存储数据库表并从中读取值。对于我的函数,我将表名传递给查询和数组,以将数据写入函数参数。
我可以从传递的参数查询所需的表没有问题,但是当我尝试插入数组时,我得到一个错误。下面是说功能。
onDeviceReady
function onDeviceReady()
{
queryLocalStorageTablesAndBuildArrays($scope.tableArrayAssociation);
}
遍历每个项目,查询表格并推送到数组。
function queryLocalStorageTablesAndBuildArrays(tableArrayAssociation) {
for (var i = 0; i < $scope.tableArrayAssociation.length; i++) {
queryTable($scope.tableArrayAssociation[i].tablename, $scope.tableArrayAssociation[i].arrayname);
}
function queryTable(tableName, arrayName) {
var sql = 'SELECT * FROM ' + tableName + ''; // OK
db.transaction(function (tx) {
tx.executeSql(sql, [],
(function (arrayName) {
return function (tx, results) {
querySuccess(tx, results, arrayName);
};
})(arrayName), errorCB); // OK
});
}
function querySuccess(tx, results, arrayName) {
var len = results.rows.length; // OK
for (var i = 0; i < len; i++) {
$scope[arrayName].push(results.rows.item(i)); // Not working here
arrayName.push(results.rows.item(i)); // Also tried this, but arrayName.push is not a function error thrown
}
}
arrayName.push(...)无法正常工作,因为我只是想要推送到名称(String)而不是实际的数组。显示 $ scope [arrayName] 的日志显示它是一个对象,但 push 无效 - value = undefined。
有人可以建议解决这个问题吗?如何将查询的表值分配给其对应的数组以在我的视图中填充值?