У меня есть служба данных, которая будет обрабатывать все мои операции, связанные с данными, и все эти операции являются асинхронными.
Как только я нажимаю кнопку ERASE, появляется одна функция, которая стирает все данные и возвращает объект, содержащий статус операции (Успех: true/false).
На основе этого значения (ИСТИНА) мне нужно перейти к другому представлению (страница «Данные успешно удалены»).
Но когда я нажимаю кнопку в первый раз, маршрутизация не происходит (но функция стирания дает правильное значение (true). Однако, если я снова нажимаю ту же кнопку, маршрут происходит.
Вот как я использую свою функцию removeDatabase() (часть dataService).
self.removeDatabase = function () {
//$location.path("/setup");
dataService.resetDatabase().done(function (msgs) {
if(msgs['Operation_success']){
console.log("Operation is Success ? :"+msgs['Operation_success']);
$location.path("/setup");
//self.loadSetup();
}
});
},
Вот функция внутри службы.
appdata.resetDatabase = function () {
appdata.msgs = {};
var deferred = jQuery.Deferred();
appdata.db = window.openDatabase("finbud_db", "1.0", "FinBud", 20);
var d1 = jQuery.Deferred();
appdata.db.transaction(function (tx) {
tx.executeSql('DROP TABLE IF EXISTS BASE_TABLE');
}, function () {
appdata.msgs['BASE_TABLE'] = "Could not Delete";
appdata.msgs['Operation_success'] = false;
d1.resolve();
}, function () {
appdata.msgs['BASE_TABLE'] = "Deleted";
appdata.msgs['Operation_success'] = true;
d1.resolve();
});
var d2 = jQuery.Deferred();
appdata.db.transaction(function (tx) {
tx.executeSql('DROP TABLE IF EXISTS CATEGORY_TABLE');
}, function () {
appdata.msgs['CATEGORY_TABLE'] = "Could not Delete";
appdata.msgs['Operation_success'] = false;
d2.resolve();
}, function () {
appdata.msgs['CATEGORY_TABLE'] = "Deleted";
appdata.msgs['Operation_success'] = true;
d2.resolve();
});
var d3 = jQuery.Deferred();
appdata.db.transaction(function (tx) {
tx.executeSql('DROP TABLE IF EXISTS ACCOUNTS_TABLE');
}, function () {
appdata.msgs['ACCOUNTS_TABLE'] = "Could not Delete";
appdata.msgs['Operation_success'] = false;
d3.resolve();
}, function () {
appdata.msgs['ACCOUNTS_TABLE'] = "Deleted";
appdata.msgs['Operation_success'] = true;
d3.resolve();
});
var d4 = jQuery.Deferred();
appdata.db.transaction(function (tx) {
tx.executeSql('DROP TABLE IF EXISTS TRANSACTIONS_TABLE');
}, function () {
appdata.msgs['TRANSACTIONS_TABLE'] = "Could not Delete";
appdata.msgs['Operation_success'] = false;
d4.resolve();
}, function () {
appdata.msgs['TRANSACTIONS_TABLE'] = "Deleted";
appdata.msgs['Operation_success'] = true;
d4.resolve();
});
jQuery.when(d1, d2, d3, d4).done(function () {
deferred.resolve(appdata.msgs);
});
return deferred.promise();
};
Наконец, HTML:
<md-button ng-click="appCtrl.removeDatabase();">
<i class="mdi mdi-reload"></i> Reset App
</md-button>
Любая помощь приветствуется. Благодарю вас