我有一个使用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;
如何将表中的值推送到数组?这是最好的方法(猜测没有)还是有更好的方法(猜测是)。