繁体   English   中英

以下链接的角度路线?

[英]Angular routes for following links?

我有下面提到的链接,我想为此编写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', {
})

它的工作正常,但我不想这样做。

您可以根据需要向路由器传递尽可能多的参数,因此请尝试根据您的路线中需要的路段创建尽可能多的参数。 这条路:

.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”是一个占位符,必须在控制器中将其忽略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM