【发布时间】:2026-01-14 05:10:02
【问题描述】:
谁能解释我为什么Angular UI Router Extras加法
触发两次(在初始化时!)$stateChangeStart 事件,以防我有一些异步 ajax 检查和e.preventDefault() 调用?
短事件代码示例:
$rootScope.$on("$stateChangeStart", function (e, toState, toParams, fromState, fromParams, error) {
console.log("$stateChangeStart");//fired twice
if(!User.data) {
e.preventDefault();
$http.get("https://randomuser.me/api/")
.success(function(data, status, headers, config) {
console.log(data);
User.data = data;
$state.go(toState, toParams);
});
}
});
没有额外的东西,一切都按预期工作。
Tnx
【问题讨论】:
-
删除
e.preventDefault(); -
那么成功回调中的状态改变永远不会执行
-
触发一次,你阻止它,因为数据没有返回......你重定向并再次触发。在解析主应用程序状态时执行此 api 调用会更好
-
请提供一些小提琴...
标签: javascript angularjs ajax angular-ui-router angular-ui-router-extras