2014-10-03 23 views
10

AngularJS ve ui-router kullanıyorum ve app.js numaralı telefondan.AngularJS ui-yönlendirici, aksi halde URL yerine devlet?

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

Normalde ben sadece yapacağını:

$urlRouterProvider.otherwise('/'); 

Ancak Ben bunun yerinebir devlet bir URL'ye ama göndermesini istemiyorum: Aşağıdaki çizgi var Bu:

$state.go('404'); 

Aksi yöntem için bunu nasıl yapabilirim?

Not: 404 durumumun bir URL'si olmadığından, temel olarak kullanıcının girdiği veya ziyaret ettiği URL'yi saklar ve yalnızca şablonu değiştirir.

cevap

24

Sana bu kodla

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

Evet, bunu halletmenin güzel bir yolu gibi görünüyor :) – Cameron

3

Bu deneyin olduğunu elde düşünüyorum. @ Kdlcruz cevabı

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

Sadece küçük bir gelişme:

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

o yaparak, hala mümkün yanlış URL'yi tutmak ve tek devlet değiştirilir.

İlgili konular