2014-10-03 8 views
10

Ich verwende AngularJS und ui-router und in meinem app.js. Ich habe die folgende Zeile:AngularJS UI-Router sonst statt URL angeben?

$urlRouterProvider.otherwise('/'); 

jedoch Ich will nicht, dass es den Benutzer zu einer URL aber stattin einen Zustand senden:

.state('404', 
     { 
      views: { 
       'body': { 
        templateUrl: 'partials/404.html', 
       } 
      } 
     }); 

Normalerweise würde ich nur tun dies:

$state.go('404'); 

Wie kann ich dies für die andere Methode tun?

Hinweis: mein 404-Status hat keine URL, also behält er im Prinzip die URL, die der Benutzer eingegeben oder besucht hat, und ändert nur die Vorlage.

Antwort

24

Ich denke, man erreicht, dass mit diesem Code

$urlRouterProvider.otherwise(function($injector, $location){ 
    $injector.invoke(['$state', function($state) { 
    $state.go('404'); 
    }]); 
}); 
+0

Ja, das scheint eine coole Art zu sein, damit umzugehen :) – Cameron

3

Diese Versuchen.

$urlRouterProvider.otherwise(function($injector, $location){ 
    $injector.get('$state').go('404'); 
}); 
1

Nur eine kleine Verbesserung @ kdlcruz Antwort:

$urlRouterProvider.otherwise(function($injector){ 
    $injector.invoke(['$state', function($state) { 
     $state.go('404', {}, { location: false }); 
    }]); 
}); 

Dadurch, dass Sie noch in der Lage die falsche URL zu halten und nur Zustand geändert wird.

Verwandte Themen