2017-02-14 6 views
0

を角度-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... 
    }); 
}) 

、それがマッチした、そうでなければFCT入っていない時はいつでも何か、その状態に送信:

彼らの例では、このようになります。

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

これはテストしていませんが、動作するはずです。

+0

私はウェブサイトの標準的な動作をしないようにしようとしていますか?ユーザーが悪いURLを入力するたびに、彼らはホームページに戻ってしまいます。 – DaveC426913

+0

デフォルトでは、AngularJSはURLをハッシュタグでルーティングします。ハッシュタグの後ろにないものは、デフォルトのangular 1 $ locationProviderの有効なルートではありません。この問題は、$ locationProviderを修正して#を削除することで解決できますが、これはAngular 2で削除されました。これが役立つことを願っています。 – flashjpr

関連する問題