2016-12-05 1 views
0

私は以下のようなリンクを持っており、私はそれのために角のルート条件を書きたいと思います。次のリンクのための角度のあるルート?

リンク:このように

1.www.example.com/level-1 
2.www.example.com/level-1/level-2 
3.www.example.com/level-1/level-2/level-3 

私は、このためのルート条件はので、私は、私はこれは動的な方法で、私は手動で書きたいいけない意味したい$routeProvider.when('/level-1/:slug', {});

で書くことができますしたいので、私は、メガメニューリンクを持っていますレベル1を接頭辞として使用します。

ダイナミックそれは私がこのようにしようとしている3

レベル1またはレベル2またはレベルの接頭辞として任意の用語になります意味:

.when('/level-1/:slug', { 
}) 
.when('/level-1/level-2/:slug', { 
}) 
.when('/level-1/level-2/level-3/:slug', { 
}) 

その作業罰金が、私はこれでやりたいいけません方法。

+0

あなたのコードで何か試しましたか?更新する場合は – Aravind

+0

@Aravindを更新してください。 –

+0

質問を一度読んでください。十分な情報があると思いますか?それを意味のあるものにすることができれば? – Aravind

答えて

1

ルーターに必要な数のパラメーターを渡すことができます。ルートに必要な数のセグメントを作成してみてください。この方法:スラグ:もちろん

.when('/:lev1/:slug', { ... }) 
.when('/:lev1/:lev2/:slug', { ... }) 
.when('/:lev1/:lev2/:lev3/:slug', { ... }) 

は、あなたのコントローラーにあなたが行うのと同じに、これらのパラメータにアクセスすることができます。 この問題を避けるためにできることは、これらすべてのルートにプレフィックスが付いていることです。これらのルートは、2つ、3つ、または4つのセグメントを持つすべての州をキャッチして、あなたの選択した固定ストリングで。たとえば、次のように

.when('/megamenu/:lev1/:slug', { ... }) 
.when('/megamenu/:lev1/:lev2/:slug', { ... }) 
.when('/megamenu/:lev1/:lev2/:lev3/:slug', { ... }) 

EDIT:あなたがこれらのルートでは、n個のレベルを必要とする、おそらくあなたが同じコントローラにバインドするだろうと思われるコメントを1として。

1)AngularJS 1.5以降を使用している場合、必要なパラメータとしてバインディングとして作成するコンポーネントを作成し、そのコンポーネントにルーティングすることができます。あなたは1つのルートで十分でしょう。

2)以前のバージョンのAngularJSを使用している場合、または新しいコンポーネントアーキテクチャーを混乱させたくない場合は、次のようにしてください。最大レベル数のルートを1つだけ定義します。 5つのセグメントとスラグパラメータを持つルート、使用されていないものにダミー値を渡して、コントローラ上のこれらのパラメータを解析して、有効なものがどれかを確認します。その後、

.when('/megamenu/:lev1/:lev2/:lev3/:lev4/:lev5/:slug', { ... }) 

このようなリンクを生成します。あなたが「XXXXX」はプレースホルダであり、あなたのコントローラでは無視されなければならないよりも、その後、知っているだろう

<a href="/megamenu/group/item/code/XXXXX/XXXXX/whatever123">CLICK ME</a> 

を。

+0

もし私がこのレベルを持っていれば、あなた一人でnthなので、右のn倍にこの条件を一つずつ必要とします。 –

+0

はい私はあなたを得ましたが、正しくはありません。:( –

+0

あなたの疑問は何ですか?あなたが私に詳細を教えてくれないともう助けません... – Vi100

関連する問題