2017-02-14 2 views
0

Если пользователь myURL/ или myURL/#/ или даже myURL/#/Foo они получают на мою страницу индекса.реализации угловую-UI-маршрутизатор «иначе» состояние

Но если они набирают myURL/foo, они получают 404. Это ужасно. Вместо этого они должны быть перенаправлены на /.

Я пытаюсь реализовать это, и мне не очень повезло.

(function() { 
    'use strict'; 

    angular 
     .module('myApp') 
     .config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { 


      $stateProvider 
       .state('index', { 
        name: 'index', 
        url: '/', 
        templateUrl: 'js/views/page1.html', 
        controllerAs: 'page1Controller', 
        data: { pageTitle: 'Main' } 
       }) 
       .state('page2', { 
        name:'page2', 
        url: '/page2/:id', 
        templateUrl: 'js/views/page2.html', 
        controllerAs: 'page2Controller', 
        data: { pageTitle: 'page2' } 
       }) 
      $urlRouterProvider.otherwise('/'); 
     }]); 
})(); 

Я посмотрел на десятки статей, и нигде не я, кажется, чтобы быть в состоянии найти этот простой случай обрабатывается.

ответ

0

На official docs упоминается, что вы можете передать $injector и $location функции в противном случае.

Их пример выглядит следующим образом:

app.config(function($urlRouterProvider){ 
    // if the path doesn't match any of the urls you configured 
    // otherwise will take care of routing the user to the specified url 
    $urlRouterProvider.otherwise('/index'); 

    // Example of using function rule as param 
    $urlRouterProvider.otherwise(function($injector, $location){ 
     ... some advanced code... 
    }); 
}) 

Что вы можете сделать, чтобы достичь своей цели, чтобы создать государство, и всякий раз, когда что-то она не соответствует и входит в противном случае ГЦТ, отправить его в таком состоянии.

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

Я не проверял это, но должен работать.

+0

Является ли то, что я пытаюсь сделать не стандартным поведением для веб-сайта? Каждый раз, когда пользователь вводит плохой URL-адрес, он просто возвращается на главную страницу? – DaveC426913

+0

По умолчанию, AngularJS будет маршрутизировать URL-адреса с хэштегом. Независимо от того, что hashtag не является допустимым маршрутом в угловом 1 $ locationProvider по умолчанию. Эта проблема может быть решена путем удаления # (модификация $ locationProvider. Она была удалена в Angular 2. Надеюсь, что это поможет. Если вам нужна помощь в удалении #, дайте мне знать. – flashjpr

Смежные вопросы