2016-12-05 50 views
0

我有鏈接如下所述,我想寫的Angular路線條件。以下鏈接的角度路線?

鏈接:

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', {});

寫我想這在動態的方式意味着我不想手動編寫level-1作爲前綴字詞。

動態意味着這將是任何條款,如1級或2級或級前綴3

我已經試過這樣:

.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', { ... }) 

當然,你可以在你的控制器中訪問這些參數,就像你用的一樣:slug。 但請注意,這些路線將捕獲所有擁有2,3或4個分段的州,因此它們可能會混淆在應用中定義的其他路線... 爲避免此問題,您可以做的一件事是爲所有這些路線加上前綴用你選擇的固定字符串。例如:

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

編輯:根據您的意見,因爲它似乎你需要n的這些路線的水平,也許你會想綁定到同一個控制器。這導致了兩種可能性:

1)如果您使用AngularJS 1.5或更高版本,您可以創建一個組件並路由到它,創建綁定作爲您需要的參數。你有足夠的一條路線。 2)如果你使用AngularJS的先前版本,或者你不想混淆新組件體系結構,那麼試試這樣做:定義只有一個最大級別的路由,讓我們說5.調用所有的組件具有5段的路線加上slug參數,將虛擬值傳遞給未使用的值,然後解析控制器上的這些參數以查看最有效的參數。

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

然後生成的鏈接是這樣的:

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

你就會知道再不是「XXXXX」是一個佔位符,並且必須在控制器中被忽略。

+0

如果我有這個級別是第n個,所以根據你我需要正確的第n次這個條件一個接一個......對嗎? –

+0

是的,我得到你,但不正確.. :( –

+0

你有什麼疑問嗎?我再也忍不住了,如果你不給我更多的信息.​​.. – Vi100