Я работаю с сайтом angularjs и имею опыт работы с маршрутами в Rails, а также Laravel в php. С помощью маршрутов в Laravel мы могли бы динамически создавать набор маршрутов, похожих на:
foreach($cities as $city):
Route::get($city.'/hotels');
Route::get($city.'/{slug}');
endforeach;
Здесь мы определили ряд отдельных маршрутов в Laravel, которые технически выглядят одинаково, за исключением значений city
и slug
.
Я нахожу angularJS немного ограниченным в определении маршрутов в этом случае. Честно говоря, я немного потерял здесь.
UPDATE
Здесь я внес некоторые изменения - в основном я создал службу, которая извлекает активы из моей базы данных, например, в этом случае список городов и категорий. Я пытаюсь сделать это:
Если {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-адрес URL-адреса, чтобы решить, какой контроллер отправить обратно, но он вообще не работает: (