2014-10-03 10 views
10

Używam AngularJS i ui-router oraz w moim app.js. Mam następujący wiersz:AngularJS ui-router inaczej podać zamiast adresu URL?

$urlRouterProvider.otherwise('/'); 

Jednak nie chcę go wysłać użytkownikowi URL ale zamiastdo stanu:

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

Normalnie bym po prostu zrobić to:

$state.go('404'); 

Jak mogę to zrobić dla metody inaczej?

Uwaga: mój stan 404 nie ma adresu URL, więc zasadniczo zachowuje adres URL wprowadzony lub odwiedzony przez użytkownika i po prostu zmienia szablon.

Odpowiedz

24

myślę, że osiągnięte z tym kodem

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

Tak, to wygląda na fajny sposób, żeby sobie z tym poradzić :) – Cameron

3

Try To.

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

Wystarczy niewielka poprawa do użytkownika @ kdlcruz odpowiedź:

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

Dzięki temu, że jesteś jeszcze w stanie utrzymać błędny adres URL, a jedynie stan ulegnie zmianie.

Powiązane problemy