我想取消使用ui路由器在某些条件下的$转换更改。
在我来看块,我有以下代码:
$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);
});
});
我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;
}
然后基于上述条件下,$过渡会带领地点或将取消。问题是,即使上面的代码的承诺被拒绝,状态仍然会改变到最初请求的状态。在这种情况下,我怎样才能“取消”状态变化?