【问题标题】:How to Access a Sql lite Variable From one Js to another Js in Cordova如何在 Cordova 中从一个 Js 访问 Sql lite 变量到另一个 Js
【发布时间】:2017-02-06 10:49:17
【问题描述】:

嗨,我已经在我的项目中实现了一个 SqlLite,我正在 Login.js 中创建数据库,但我的问题是现在我需要从另一个 JS 更新一个列。 如何从另一个 JS 访问数据库变量。 代码 A.js:

function onDeviceReady() {
        window.db = window.openDatabase("SP_DB", "1.0", "SPDB", 200000);
    };

现在我需要从另一个 JS 访问该 window.db 以添加或更新列。如何做到这一点

代码 B.js: 在这里我需要访问那个 window.db 变量,我不想再次创建数据库。

var saveimg = document.getElementById("saveimg");
    saveimg.addEventListener('click', goInsert, false);


    function goInsert() {

       window.db.transaction(insertDB, errorCB, successCB);
    }

    function insertDB(tx) {

      tx.executeSql('INSERT INTO SP(FirstName,LastName,Address) VALUES ("' + document.getElementById("txtFirstName").value + '","'
            + document.getElementById("txtLastName").value + '","' + document.getElementById("txtAddress").value + '")');

    }


    function errorCB(err) {
        alert("Error processing SQL: " + err.code);
    }


    function successCB() {
        alert("success!");
        db.transaction(queryDB, errorCB);
    }


    function queryDB(tx) {
        tx.executeSql('SELECT * FROM SP', [], querySuccess, errorCB);
    }

【问题讨论】:

  • 将其存储在会话中或使其全局化
  • 是的,我已经将它存储在 Session 中,虽然存储它是对象,但同时获取它是字符串格式并且为空。它正在抛出未定义的
  • 分享您的代码,以便我们了解究竟发生了什么
  • 请找到更新后的代码
  • 你试过使用Cordova-sqlite-storage插件吗?您应该能够像 window.sqlitePlugin.openDatabase 在任何页面上使用它,包括在 deviceReady 事件触发后对 cordova.js 的引用。

标签: javascript jquery node.js sqlite cordova


【解决方案1】:

您的变量 window.db 在全局范围内。因此,您可以在定义它的同一页面中的任何位置访问它。 我希望您提到的“另一个 JS”在同一页面中。如果它在不同的页面中,它将不起作用。

Cordova 应用程序应采用 SPA(单页应用程序)设计。如果您不使用 SPA,则需要在每个页面中定义所需的变量。请查看https://cordova.apache.org/docs/en/latest/guide/next/#1-spa-is-your-friend

【讨论】:

  • Another.JS 是一个不同的 JS,为什么它不可能
猜你喜欢
  • 2016-07-07
  • 2018-09-26
  • 2021-12-24
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
相关资源
最近更新 更多