Может кто-нибудь объяснить мне, почему Angular UI Router Extras дополнение триггера дважды (инициализация!) $stateChangeStart
события в случае, когда у меня есть некоторые проверки асинхронного АЯКСА и 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();' – Ronnie
Тогда изменение состояния в успех обратного вызова никогда не выполняется – Vlatko
триггеров один раз, вы предотвратить это, потому что данные не вернулся .... вы поменяете и пожары снова. Было бы намного лучше сделать этот вызов api в разрешении основного состояния приложения. – charlietfl