将数组传递给函数并使用AngularJS将值推送到它

时间:2016-07-28 10:23:06

标签: javascript arrays angularjs sqlite

我正在尝试在加载控制器时从本地存储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。

有人可以建议解决这个问题吗?如何将查询的表值分配给其对应的数组以在我的视图中填充值?

0 个答案:

没有答案