gpt4 book ai didi

javascript - bool 值未在 AngularJS 和 SQLite 上注册

转载 作者:行者123 更新时间:2023-12-03 06:45:37 24 4
gpt4 key购买 nike

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

我正在尝试在我的项目中实现一个 SQLite 本地数据库来存储信息。当手机关闭、应用程序关闭等时,该信息应该仍然存在。

在 View 上,我要求用户输入一些值。然后对照 SQLite 本地数据库检查该值,如果找到匹配项,用户将收到成功消息。如果未找到匹配项,用户将收到失败消息。

我已完成 View 并正在注册用户输入。我还实现了 SQLite 数据库,并预先填充了一些用于测试的值。

在我看来,我有一个 ng-if 来检查是否找到匹配项,并且在我的 Controller 中,我有一个 bool 值,该值根据是否在 SQLite 本地数据库中找到匹配项返回 true/false。

然而,在我看来,ng-if 始终显示 Controller 的初始化 bool 值(在本例中为 false),直到用户与页面上的任何元素进行交互。

在我的 view.html 中,我按如下方式设置 ng-if

<div ng-if="success">
<p>Success!</p>
</div>

<div ng-if="!success">
<p>Fail!</p>
</div>

然后在我的 app.js Controller 中初始化 success bool 值,并检查我的数据库中用户输入的值,如下所示

$scope.success = false;

// Initialising Database variable
var db;
document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
db = window.openDatabase("myDB", "1.0", "MyDB", 200000);
db.transaction(createDB, errorCB, successCB);
db.transaction(queryDB, errorCB, successCB);
}

function createDB(tx) {
tx.executeSql('DROP TABLE IF EXISTS values');
tx.executeSql('CREATE TABLE IF NOT EXISTS values (id INTEGER PRIMARY KEY, name)');
tx.executeSql('INSERT INTO values (id, name) VALUES (1, "Lorem Ipsum")');
}

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

function querySuccess(tx, results) {
var len = results.rows.length;

// There are records in the Database
if (len != 0)
{
// Checking user value against DB records happen here - ommited becasue not relevant - working and returns true here
$scope.success = true; // This should set my view.html ng-if to true
}
// There are NO records in the Database
else
{
$scope.success = false;
}
}

即使 console.log() 显示 Controller 中的值设置为 true,view.html 也始终显示 Fail!。问题还在于,页面上有一个小信息按钮,它只是向用户显示带有一些信息的模式。一旦我按下该键,成功 bool 值就会设置为 true - 即使信息按钮上没有触发器。

谁能解释一下为什么会发生这种情况?我究竟做错了什么?

最佳答案

您需要将其添加到摘要循环中,$timeout可以像这样使用

$timeout(function(){
$scope.success = false;
}, 1)

关于javascript - bool 值未在 AngularJS 和 SQLite 上注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37748848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com