Gar*_*eld 6 javascript angularjs angular-ui angular-ui-router angularjs-1.6
我刚刚更换了$stateChangeStart
与$transitions.onStart
$rootScope.$on('$stateChangeStart', function(e, ...){
e.preventDefault();
// other code goes here...
});
Run Code Online (Sandbox Code Playgroud)
至
$transitions.onStart({}, function(tras){
// need a code equivalent to e.preventDefault
// need a code to identify event.defaultPrevented
// other code goes here...
// get parent states
_o.util.getAncestorStates(toState.name, true).reverse()
.forEach(function (state) {
// certain condition to call event.preventDefault()
if(event.defaultPrevented) {....}
});
});
Run Code Online (Sandbox Code Playgroud)
我想,我们可以通过添加return $q.reject()
来阻止转换,e.preventDefault()
但我无法理解下面的代码return $q.reject()
将如何执行.
另外,我该如何更换event.defaultPrevented
?
我认为应该做些什么,transition.promise
但不清楚.
对不起,我无法理解官方文档 - https://ui-router.github.io/ng1/docs/latest/.任何人都可以帮我找到更好的解释或替换上面的代码吗?
您可以根据您的逻辑选择以下两个选项之一:
由于angular-ui-router 1.0.3你可以使用$transition.abort()
.如果必须在异步调用后中止状态更改,则选择更清洁.
$transitions.onStart({}, function($transition) {
$transition.abort();
//more code...
});
Run Code Online (Sandbox Code Playgroud)另外,正如@tanmay在评论中所说,你可以用一个简单的return false
方法取消它.这也适用于非稳定版本(1.0.0.beta和1.0.0.rc).(在ui-rooter docs中查看)
$transitions.onStart({}, function($transition) {
//code ...
return false;
});
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
2074 次 |
最近记录: |