Я пытаюсь отменить изменение переходов $ при определенных условиях с помощью ui-router.
В моем блоке запуска, у меня есть следующий код:
$transitions.onStart({ from: 'createCatalog.previewStyles'}, function(trans) {
var from = trans.from(),
to = trans.to();
previewStylesService.checkSave()
.then(function success() {
return $state.target(to);
}, function err() {
return $state.target(from);
});
});
функция
My previewStylesService checkSave выглядит следующим образом:
function checkSave() {
var deferred = $q.defer()
if (dataChanged) {
if (confirm('Would you like to save the changes made to the catalog?')) {
catalogService.prepCatalogSave()
.then(function success() {
deferred.resolve();
}, function err() {
deferred.reject();
})
} else {
deferred.resolve();
}
} else {
deferred.reject();
}
return deferred.promise;
}
Затем на основе вышеуказанных условиях $ переход будет либо принять место или будет отменено. Проблема в том, что даже если обещание вышеописанного кода отклонено, состояние по-прежнему изменяется в первоначально запрошенном состоянии. Как я могу «отменить» изменение состояния в этом случае?