2014-10-03 55 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 }); 
    }]); 
}); 

通过这样做,你仍然能够保持不正确的网址,只有状态改变。

相关问题