使用AngularJS和JS

时间:2016-09-10 08:32:53

标签: javascript angularjs arrays sqlite

我有一个使用AngularJS,Monaca和Onsen UI开发的跨平台应用程序。

我有一个 服务 获取 设置 < / strong>值可在整个应用中从各种 控制器 进行访问。

我已经创建了各种SQLite数据库表,每个表都填充了值。我需要做的是访问表并将表值存储在“对应”数组中,以便可以从应用 视图 访问它们。

首先,我初始化数组以存储将从数据库表中检索的值。然后我创建了表数组关联JSON,它将匹配要填充其对应表的数组,如下面的小提取所示。

// Init Arrays and Table association
var FruitArray = [];
var VegArray = [];

var formArrays = [{
    tablename: "tb_fruit",
    arrayname: "FruitArray"
}, {
    tablename: "tb_veg",
    arrayname: "VegArray"
}];

接下来,我 查询 SQLite表,并使用检索到的值来填充数组,如下面的示例所示。

var myFunctions = {
    initFormData: function () {
        for (var i = 0; i < formArrays.length; i++) {
            myFunctions.queryTable(formArrays[i].tablename, formArrays[i].arrayname);
        }
    },

    // Query the Tables
    queryTable: function (tableName, arrayName) {
        var sql = 'SELECT * FROM ' + tableName;

        db.transaction(function (tx) {
            tx.executeSql(sql, [],
                (function (arrayName) {
                    return function (tx, results) {
                        myFunctions.querySuccess(tx, results, arrayName);
                    };
                })(arrayName), myFunctions.queryError);
        });
    },

到目前为止很好。在我的 成功回调 下面,我尝试将从表中检索到的数据推送到数组 - 但没有运气。我之前做过类似的事情,但是在AngularJS ala中向数组添加数据。 $范围[arrayName中] .push(results.rows.item(i))的。但在这种情况下我似乎无法做同样的事情。

    // Success Callback
    querySuccess: function (tx, results, arrayName) {

        for (var i = 0; i < results.rows.length; i++) {
            alert("Array Name: " + arrayName + // Working - returns name e.g. VegArray 
                "\n Results: " + results.rows.item(i)); // Working - returns [object Object]

            [arrayName].push(results.rows.item(i));
            alert("Array: " + [arrayName]); // Not working here - simply returns name e.g. VegArray
        }
    },

    // Error Callback
    queryError: function (tx, err) {
        alert("An error has occured);
    },
} // myFunctions() end
return myFunctions;

如何将表中的值推送到数组?这是最好的方法(猜测没有)还是有更好的方法(猜测是)。

0 个答案:

没有答案