Angularjs 取消$transitions更改ui路由器
在某些情况下,我试图使用ui路由器取消$transitions更改 在我的运行块中,我有以下代码:Angularjs 取消$transitions更改ui路由器,angularjs,angular-ui-router,Angularjs,Angular Ui Router,在某些情况下,我试图使用ui路由器取消$transitions更改 在我的运行块中,我有以下代码: $transitions.onStart( { from: 'createCatalog.previewStyles'}, function(trans) { var from = trans.from(), to = trans.to(); previewStylesService.checkSave() .then(func
$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;
}
然后,基于上述条件,$转换将发生或取消。问题是,即使上述代码的承诺被拒绝,状态仍会更改为最初请求的状态。在这种情况下,我如何“取消”状态更改?我知道帮助您可能已经晚了,但这可能会帮助其他人。 我只是遇到了同样的问题,在大约几个小时的研究/文档阅读之后,我得出结论,$transitions.onBlaBla回调的返回值可以是true(正常恢复转换)、false(取消转换)或promise(transitionService将等待此承诺拒绝/解决,以决定是否需要进行转换 你可以试着回来
return previewStylesService.checkSave()
查看发生了什么,或者尝试使用返回true/false和其他一些代码挂钩以不同的方式执行
以下是onSuccess回调返回的钩子结果链接:
只需从钩子中返回false即可取消转换:
没错,仅供参考,只有在转换结束时才会调用onSuccess和onError钩子,因此返回值将被忽略(请参阅文档:-返回值),因此对于所有其他钩子,返回值将按预期工作。