我正在处理一个angularjs网站,并且在Rails和php的Laravel中有路由方面的工作经验。在Laravel中,我们可以动态地创建一组类似于以下内容的路由:
foreach($cities as $city):
Route::get($city.'/hotels');
Route::get($city.'/{slug}');
endforeach;
在Laravel中,我们定义了一系列不同的路由,它们在技术上看起来几乎相同,除了city
和slug
的值不同。
在这种情况下,我发现angularJS在定义路由方面有点受限。老实说,我有点迷失了。
更新
我做了一些修改 - 基本上我设置了一个服务,从我的数据库中检索资产,例如在这种情况下城市和类别的列表。我正在尝试做到这一点:
如果{slug}
在从我的API检索到的类别数组中,则使用我的ListController
和列表视图,但如果没有,则改用我的SingleVenueController
和单个视图。这是我目前的代码,但它不起作用:(
appRouteProvider.when('/:city/:slug', {
templateUrl : function(sharedParams, $routeParams){
t = sharedParams.getCurrentPageType($routeParams);
if(t=='list'){
return '../../app/templates/list.html';
}
if(t=='single'){
return '../../app/templates/single.html';
}
},
controller : function(sharedParams, $routeParams){
t = sharedParams.getCurrentPageType($routeParams);
if(t=='list'){
return 'ListsController';
}
if(t=='single'){
return 'SingleController';
}
},
resolve:{
sharedParamsData:function(sharedParams){
return sharedParams.promise;
},
}
})
在上面的代码中,
sharedParams
是一个服务,而getCurrentPageType
仅检查url slug以决定要发送回哪个控制器 - 但它实际上并没有起作用 :(
ui-router
还是ng-route
? - Merlin