我希望有一条看起来像这样的路线:
$routeProvider.when('/trial/:extention/:id', {templateUrl: 'partials/quran.html', controller: 'QCtrl'});
$routeProvider.otherwise({redirectTo: '/page/1'});
我可以放置'/trial/someExtention/1'
或'/trial/someExtention/1/1/5'
问题是,当我执行'/trial/someExtention/1'
时,它会将我发送到其他路线,而我希望它能够同时执行这两项操作而不会发送到其他地方
答案 0 :(得分:2)
你可以创建一个" catchall"像这样的路线规则::ids*
这告诉路由器将/:extension /之后的所有内容存储到ids route-parameter中。您的$routeProvider
可能如下所示:
$routeProvider
.when( '/:extension/:ids*', {
templateUrl: 'this.html',
controller: 'routeCtrl'
})
.when( '/that', { templateUrl: 'that.html' } )
.otherwise( { redirectTo: '/that' } );
然后/:extension/:ids*
将同时捕获" / Something / 1"和" / Someotherthing / 1/2/3"。在最后一种情况下,ids route-parameter将具有值" 1/2/3"。如果需要,可以将其拆分为数组,如下所示:
$scope.ids = $routeParams.ids.split("/");
如果您想仔细查看,我在此处创建了 plunker :http://plnkr.co/edit/EZqMtnbRs0lKc07hnenQ?p=preview
更新:如果您不想将所有内容存储到单个ID变量中,您还可以指定可选的路由参数:
$route$routeProvider
.when( '/:extension/:id/:id2?/:id3?', {
templateUrl: 'this.html',
controller: 'routeCtrl'
})
最后的?
表示该参数是可选的。
答案 1 :(得分:1)
所以,基本上对于'/trial/someExtention/1'
,您的配置应该可以正常工作,以防万一看看我的小提琴http://jsfiddle.net/gRLLP/2/
如果您想同时使用一条规则捕获'/trial/someExtention/1'
和'/trial/someExtention/1/1/5'
,则可以使用新功能(据我记得它是在v1.1.5中引入的):
像这样设置规则 - '/trial/*extension/add'
Details about * rule
BTW,这是提交changes
答案 2 :(得分:0)
您可以将templateUrl用作可以使用您的网址参数的功能
$routeProvider.when('/subscriber/update/:action', {
templateUrl: function(para){
return 'partials/subscribers/'+ para.action +'.html';
},
controller: 'SubscriberController'
}).otherwise({
redirectTo: '/'
});