2016-11-07 5 views
0

コンテキストを提供するために、いくつかのモジュールでAngularアプリケーションを使用しています。私はこれらのモジュールにルーティングを提供するためにui-routerと協力しています.URL内のモジュールの名前を使用したいと思います。私はそうのような各上のパラメータでのModule1とmodule2の両方の状態を定義している私の角度アプリのconfigブロックで:角度ui-routerパラメータにより、他の状態と競合が発生する

.state('module1', { 
    url: '/:module_name', 
    templateUrl: '/app/modules/module1/views/index.html', 
    controller: 'someCtrl' 
}) 

.state('module2', { 
    url: '/:module_name', 
    templateUrl: '/app/modules/module2/views/index.html', 
    controller: 'someOtherCtrl' 
}) 

私はまた、各モジュールのホームページに私を取る必要がありますいくつかのリンクを持っています。

http://localhost:3000/#/module1

http://localhost:3000/#/module2/users

http://localhost:3000/#/module2/books

当然、問題はそのURLはすべて同じ形を持っているので、最初の状態は、私のモジュール2ルートの残りのすべてをキャッチするということです

など。私は統計を定義する順序がどのように重要であるかを見ることができますが、私は状態パラメータとしてモジュール名を持つことができる方法を考え出すことができません(これは対応するコントローラ操作がどのモジュールから来ているかを区別するため)、この階層問題を完全に避けてください。

アイデア?

答えて

1

あなたのケースでは、ui-routerはあなたが指している経路がまったく同じであることを知らないでしょう。あなたはモジュール名(ほんの数があると仮定)をハードコーディングする必要があります、次のいずれか

.state('module1', { 
    url: '/module1', 
    templateUrl: '/app/modules/module1/views/index.html', 
    controller: 'someCtrl' 
}) 

.state('module2', { 
    url: '/module2', 
    templateUrl: '/app/modules/module2/views/index.html', 
    controller: 'someOtherCtrl' 
}) 

.state('module2', { 
    url: '/module2/users', 
    templateUrl: '/app/modules/module2/views/users.html', 
    controller: 'someOtherCtrl' 
}) 

.state('module2', { 
    url: '/module2/books', 
    templateUrl: '/app/modules/module2/views/books.html', 
    controller: 'someOtherCtrl' 
}) 

または動的モジュール1にパスを打つようになりましたので、モジュール番号

.state('module', { 
    url: '/module/:moduleId', 
    templateUrl: 
     function (stateParams){ 
      return '/app/modules/module' + stateParams.moduleId + '/views/index.html'; 
     } 
    controller: 'someOtherCtrl' 
}) 

に基づいてHTMLを挿入このようになります

http://localhost:3000/#/module/1

+0

これは素晴らしいです。私は動的注入オプションを使用し、それは完全に動作しています。ちょうど私が必要なもの、ありがとう! – ashe540

関連する問題