le module.run() et $état.go() angularJS
Je pourrais avoir une sorte de missunderstanding. Im en utilisant angulaire de l'interface utilisateur du routeur et j'ai le problème suivant:
J'ai l'État suivant fournisseur de:
angular
.module('MainApp')
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider ) {
$stateProvider
.state('register', {
url: "/",
abstact: true,
views: {
"side-bar": {
controller: "GetSideBarCtrl"
},
"page-body@register": {
templateUrl: "/App/Views/WelcomePage.html"
}
},
})
.state('register.Register', {
url: "Register",
views: {
"page-body": {
controller: "RegisterCtrl",
templateUrl: "/App/Views/Register.html"
}
},
})
.state('register.Login', {
url: "Login",
views: {
"page-body": {
controller: "LoginCtrl",
templateUrl: "/App/Views/Login.html"
}
},
})
//For registered and loged in users!
/* */
.state('main', {
url: "/:userId",
//abstact: true,
views: {
"side-bar": {
controller: "GetSideBarCtrl"
},
"page-body@main": {
// controller: "LoginCtrl",
templateUrl: "/App/Views/MainPage.html"
}
},
});
$urlRouterProvider.otherwise('/');
}]);
Et exécuter la fonction
angular
.module('MainApp')
.run(['$rootScope', '$state', '$cookieStore', 'principal',
function ($rootScope, $state, $cookieStore, principal) {
var cookies = $cookieStore.get('user');
if (cookies) {
principal.Authenticate(cookies.split(' ')[0], cookies.split(' ')[1]);
$state.go('main', { userId: cookies.split(' ')[0] });
} else {
$state.go('register.Login');
}
}]);
Tout fonctionne bien, lorsque des témoins sont présents et authenication fonctionne sans problèmes, mais $état.aller ne fait rien, je ne peux pas comprendre pourquoi, pouvez-vous s'il vous plaît aider et de m'expliquer...
Vous devez vous connecter pour publier un commentaire.
Yep, comme l'a suggéré qu'il ressemble $état.go() ne fonctionne pas correctement dans le module.run().
J'ai trouvé que le fait de mettre le $code d'état dans un $timeout œuvres, par exemple
J'ai donc fait fonctionner de la manière différente, ive utilisé $stateChangeStart et maintenant, mes exécuter la fonction ressemble à ceci:
Mais je ne comprends toujours pas pourquoi $état.go() ne fonctionne pas...
event.preventDefault()
. Sans elle, la transition actuelle (transitionTo() promesse ne sera pas interrompue / abandonnée. Voir: github.com/angular-ui/ui-router/wiki#state-change-events$urlRouterProvider.otherwise('/');
à partir de l'app.config(). Puis$state.go()
fonctionne.Je rencontre exactement le même problème.
Je suis à l'aide ionique de construire une croix-plate-forme d'application mobile.
J'ai la logique comme --> si l'utilisateur est déjà connecté. redirection vers la page principale, sinon rediriger vers la page de connexion
Cela fonctionne parfaitement sur Android, mais crash de temps en temps sur IOS. Après quelques investigations et de la recherche. J'utilise $lieu.chemin d'accès au lieu de $état.aller et tout fonctionne bien.
Espère que cela vous aider à résoudre votre problème.
$état.aller ne fonctionne pas dans la course, il n'est pas initialisé et pourtant si! Ce que je n'ai fait que jeter de la logique de service, ajoutez un contrôleur du module, vous devez l'exécuter, exécutez dans le contrôleur! Cela devrait fonctionner.
Juste le point qu'à la suite de l'avis de l' ce fil, vous pouvez également résoudre en changeant l'autre bloc pour cette:
Espère que cela aide
J'ai connu un problème similaire. $etat.n'allez pas travailler dans le .la fonction d'exécution.
Plaçant $état.aller dans un service résolu mon problème.
Il peut sembler étrange, mais pour moi la solution a été de renommer mon état et la suppression de la dot ...
Je veux une page d'accueil différente pour le client, de directeur, de gérant ou de quoi que ce soit ( mais avec la même url )
Cela ne marche pas, remplacer le nom
home.customer
état avechome-customer
et$state.go('home-customer');
et il fonctionne ...