我有如下所述的链接,我想要写的角度路线条件。
链接:
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作为前缀术语。
Dynamic意味着它将是1级、2级或3级中的任何前缀。
我试过这样做:
.when( '/level-1/:slug', {
})
.when( '/level-1/level-2/:slug', {
})
.when( '/level-1/level-2/level-3/:slug', {
})它的工作很好,但我不想这样做。
发布于 2016-12-05 10:04:21
您可以将需要的多个params传递给您的路由器,所以请尝试创建您在路由中需要的部分。这条路:
.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段调用所有路由,将一个虚拟值传递给未使用的路由,然后在控制器上解析这些参数以查看它们是否有效。
.when( '/megamenu/:lev1/:lev2/:lev3/:lev4/:lev5/:slug', { ... })然后生成如下链接:
<a href="/megamenu/group/item/code/XXXXX/XXXXX/whatever123">CLICK ME</a>您将知道'XXXXX‘是一个占位符,必须忽略在您的控制器。
https://stackoverflow.com/questions/40970621
复制相似问题