Я пытаюсь иметь динамическую маршрутизацию в Angular 1.3. Что-то похожее на то, что описано здесь и здесь. Примеры показывают примерно следующее:
$routeProvider.when('/:group/:pagename', {
controller: 'RouteCtrl',
templateUrl: 'uirouter.html'
})
а затем контроллер получит доступ к группе и pagename через $ routeParams. Это работает
Я пытаюсь сделать эту маршрутизацию немного более динамичной и динамически выбрать динамический шаблон и контроллер:
$routeProvider.when('/:group/:pagename', {
controller: $routeParams.group + 'Ctrl',
templateUrl: $routeParams.pagename + '.html'
})
Когда я устанавливаю точку останова, when
вижу, что существует свойство $ get с функцией, которая имеет $ routeParams как один из параметров. Но я не могу понять, как получить его значения.
Проект находится на очень ранней стадии - я могу работать с ui-router или с ng-router, если у любой из них есть эта функция.
Для динамической части templateUrl вы можете попробовать:
$routeProvider.when('/:group/:pagename', {
controller: "SomeCtrl",
templateUrl: function(params){return params.pagename + '.html';}
})
Не уверен, что то же самое можно было бы сделать с контроллером.
Вместо прямого значения вы можете объявить функцию, которая вернет строку templateUrl
, то есть:
$routeProvider.when('/:group/:pagename', {
controller: $routeParams.group + 'Ctrl',
templateUrl: function (routeParams) {
return routeParams.pagename + '.html';
}
});
Я думаю, что то же самое можно сказать и о controller
, но вы должны проверить его, поскольку я никогда не использовал его для контроллеров.
При этом, если у вас так много динамической логики в этом месте, возможно, вместо того, чтобы рассматривать это как разные контроллеры, вы можете инкапсулировать эти представления как разные директивы и ng-if
определенная директива зависит от $routeParams
которая будет установлена в одной упаковке контроллер?
$routeParams
в контроллере? Я попытался ввести, и это дало мне "неизвестного поставщика"