В документации AngularJs говорится, что вы можете указать либо строку, либо функцию для контроллера и templateUrl в объекте маршрута при настройке $routeProvider, однако я сталкиваюсь с проблемой при использовании функции для динамического определения контроллера на основе параметров $location. У меня есть следующая конфигурация маршрута:
$routeProvider
.when( '/workspace/:workspaceId/product/:productId/item/:itemType/:itemId/edit', {
templateUrl: function ( param ) {
switch ( param.itemType ) {
case 'topic':
return 'topic.tpl.html';
case 'course':
return 'course.tpl.html';
}
throw new Error( "Unknown product item type '" + param.itemType + "'" );
},
controller: function ( param ) {
switch ( param.itemType ) {
case 'topic':
return 'TopicController';
case 'course':
return 'CourseController';
}
throw new Error( "Unknown product item type '" + param.itemType + "'" );
}
} );
При загрузке приложения получаю следующую ошибку:
Error: [$injector:unpr] Unknown provider: paramProvider <- param
Я пропустил что-нибудь очевидное здесь? Переключение контроллера на использование строки, а не функции, устраняет проблему.
Похоже, что некоторые люди сталкивались с этой проблемой раньше (например, здесь ), но я не понимаю, почему это не работает, как предполагает документация.
Любая помощь будет принята с благодарностью!
Джозеф.
param
означает$routeParams
? - person JcT   schedule 11.02.2015