404页在角UI的路由器(404 page in angular ui-router)

2019-09-29 04:17发布

我正在使用的角度单页应用程序的UI路由器。 我有一些路线定义,我有这样一个特定的404路线:

app.config(function($urlRouterProvider, $stateProvider){
   $urlProvider.otherwise('404')
   $stateProvider
      .state('example', {
         url: '/example/:id',
         templateUrl: 'example.html',
         controller: 'ExampleController'
      })    
      .state('404', {
         url: '*path',
         templateUrl: '404.html'
      })
})

注意为404状态的URL是如何“*路径”,这意味着它将匹配任何路径。 我做到了,所以如果用户键入的东西像“/一些-不存在的URL”他不会被重定向到“/ 404”,而是留在“/一些-不存在的URL”,但见404.html模板。 这里谈到的问题:说我的应用程序我ExampleController里面的一些REST API进行交互,而API可能会返回一个对象,或者它可能会返回404基于自收到网址的ID 未找到 。 所以,我的控制器中,每当出现这种情况,我尝试重定向到404:

app.controller('ExampleController', function($state){
    someAPICall().then(function(response){ // do something}, 
                       function(response){
                            if(response.status == 404){
                                 $state.go('404');
                            }
                        });
});

这是怪异的员工发生。 它显示了404.html模板 - 一秒钟 - 然后重定向到主页(不包括它在我的代码这里简洁起见)。 我的猜测是,规定一个真正的url“404”状态没有:如果我改变它从“*路径”到“/ 404”例如URL,这工作得很好,但我不想这样做,因为用户将不会看到这是导致404响应真实的URL。 是否有此问题的任何解决方法吗?

Answer 1:

你在你的代码错误。 你写$urlProvider.otherwise('404') 将其更改为$urlRouterProvider.otherwise('404') 这应该得到它的工作。



Answer 2:

什么工作对我来说是删除$urlProvider.otherwise('404')并有404状态的最后状态



文章来源: 404 page in angular ui-router