2014-10-03 56 views
10

我使用的是AngularJSui-router以及我的app.js。我有以下行:AngularJS的ui路由器,否則狀態,而不是網址?

$urlRouterProvider.otherwise('/'); 

然而我不希望它給用戶發送到URL而是到狀態

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

一般情況下我只是做這個:

$state.go('404'); 

我該如何做其他方法?

請注意:我的404狀態沒有URL,所以基本上它保留了用戶輸入或訪問的URL,只是更改了模板。

回答

24

我覺得你實現了這個代碼

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

是的,看起來是一個很酷的方式來處理這:) – Cameron 2014-10-03 14:55:33

3

試試這個

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

只是一個小改進@ kdlcruz的回答是:

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

通過這樣做,你仍然能夠保持不正確的網址,只有狀態改變。

相關問題