Here is the solution if anyone needs it (someone answered to me on 
Stackoverflow) : 

You need to call event.preventDefault() before you call $state.go().
> See here: http://plnkr.co/edit/eUosIpdN7adJFxfDo3kV?p=preview
>

Thanks anyway !

Le mercredi 31 décembre 2014 10:30:35 UTC+2, Jeremy Belolo a écrit :
>
>
> <https://lh4.googleusercontent.com/-6SexhOWo3NM/VKOz0DKQZtI/AAAAAAABIjI/SVunU7IEdc8/s1600/a.png>
> Hello all !
>
> So It took me a very long time to understand this issue and get to a mcve 
> <http://stackoverflow.com/help/mcve>. Here is the case : I'm trying to 
> redirect a user to a login page when he's not authenticated (this is very 
> basic). Here is the code :
>
> index.html : 
>
> <html>
> <head>
>     <script 
> src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js";></script>
>     <script 
> src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.13/angular-ui-router.min.js";></script>
>     <script src="js/app.js"></script>
> </head>
> <body ng-app="starter">
>
> <div ui-view></div>
>
> <script id="login.html" type="text/ng-template">
>     l
> </script>
>
> <script id="welcome.html" type="text/ng-template">
>     w
> </script>
> </body>
> </html>
>
>
> app.js : 
>
> angular.module('starter', ['ui.router'])
>
> .run(["$rootScope", "$state", function($rootScope, $state) {
>     $rootScope.$on("$stateChangeError", function(event, toState, toParams, 
> fromState, fromParams, error) {
>         if (error === "nope") {
>             $state.go("login");
>         }
>     });
> }])
>
> .config(function($stateProvider, $urlRouterProvider) {
>     $urlRouterProvider.otherwise('/welcome');
>
>     $stateProvider
>         .state('welcome', {
>             url: '/welcome',
>             templateUrl: 'welcome.html',
>             resolve: {
>                 "auth": ["$q", function($q) {
>                     return $q.reject("nope");
>                 }]
>             }
>         })
>
>         .state('login', {
>             url: '/login',
>             templateUrl: 'views/login.html'
>         })
> });
>
>
> And just for fun, views/login.html :
>
> vl
>
>
> So, when the above code is ran, the output is good (it shows "vl"), but 
> look at the Chrome console :
>
>
>
> <https://lh4.googleusercontent.com/-6SexhOWo3NM/VKOz0DKQZtI/AAAAAAABIjI/SVunU7IEdc8/s1600/a.png>
>
>
>
> Now, the crazy part of it, is if you modify the JS and replace 
>
> templateUrl: 'views/login.html'
>
> in the login state by simply
> templateUrl: 'login.html'
>
> using the ng-template defined in the html, ALL IS GOOD ! No errors. So 
> well, I guess using a file as template must trigger some watcher or 
> whatever... Well no, I'm just out of ideas.
>
> here are two things that could help :
>
>    - There is no error when using ngRoute in place of UI Router
>    - There is no error if replacing Angular version with the 1.2.25
>
> So I think it's a bug with UI Router and Angular 1.3. But don't know at 
> all what to do to solve it. 
>
> Thanks ahead for your help !
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to