AngularJS, Monaca 및 Onsen UI로 개발 된 크로스 플랫폼 응용 프로그램이 있습니다.부울 값이 AngularJS 및 SQLite에 등록되지 않았습니다.
정보 저장을 위해 프로젝트에 SQLite 로컬 데이터베이스를 구현하려고합니다. 정보는 전화가 끊어 지거나 앱이 종료 된 후에도 유지되어야합니다.
보기에서 사용자에게 몇 가지 값을 입력하라고합니다. 그 값은 SQLite 로컬 데이터베이스에 대해 검사되고 일치하는 것이 발견되면 사용자는 성공 메시지를받습니다. 일치하는 항목이 없으면 사용자는 실패 메시지를받습니다.
보기가 완료되었으며 사용자 입력을 등록하고 있습니다. 또한 구현 된 SQLite 데이터베이스가 있고 테스트를 위해 일부 값이 미리 채워져 있습니다.
내보기에는 일치하는 항목이 있는지 확인하고 해당 컨트롤러에서 SQLite 로컬 데이터베이스에서 일치하는 항목을 발견하면 true/false를 반환하는 부울 값이 있습니다.
그러나 내 견해로는 ng-if는 사용자가 페이지의 요소와 상호 작용할 때까지 항상 컨트롤러의 초기화 된 부울 값 (이 경우 false)을 표시합니다. 가 컨트롤러를 app.js 내에서 다음
<div ng-if="success">
<p>Success!</p>
</div>
<div ng-if="!success">
<p>Fail!</p>
</div>
를 다음과 같이 내 view.html I 설정에서
내 경우 NG가-I는 성공 부울을 초기화하고, 사용자에 대한 내 데이터베이스를 확인 입력 된 값은 아래와 같습니다.
$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;
}
}
view.html은 항상 을 표시합니다. 컨트롤러의 값이 true로 설정된 것을 console.log()가 표시하더라도. 또한 페이지에 간단한 정보 버튼이있어 사용자에게 몇 가지 정보 만있는 모달을 표시합니다. 그것을 누르면 정보 버튼에 트리거가 없더라도 success 부울은 true로 설정됩니다.
왜 이런 일이 발생하는지 설명해주세요. 내가 도대체 뭘 잘못하고있는 겁니까?