Как не иметь дублирования между Grails UrlMapping и угловым роутером
Я работаю над приложением grails/angular, в котором угловой маршрутизатор настроен на использование истории HTML5. Но, чтобы использовать эту настройку, мы должны объявить маршрут в угловом маршрутизаторе И в Grail UrlMappings.
Например, угловой роутер:
angular.module('myModule',['ngRoute']).config(['$locationProvider', '$routeProvider',
function($locationProvider, $routeProvider) {
$locationProvider.html5mode(true);
$routeProvider.when('my/url', {})
.when('my/other/url', {})
}
]);
И файл UrlMappings.groovy:
class UrlMappings {
static mappings = {
//Here, duplication from the angular router
//My Single Page Angular Application is on view index
'my/url'(view:'/index')
'my/other/url'(view:'/index')
}
}
У кого-нибудь есть чистое решение, чтобы избежать дублирования между этими 2 файлами?
1 ответ
Решение
Приложения Grails предоставляют Spring bean с именем grailsUrlMappingsHolder
это дает программный доступ к отображениям URL, определенным в приложении (и его плагинах). Этот компонент является экземпляром UrlMappingsHolder. Вы можете прочитать сопоставления URL из бобов getUrlMappings()
метод и построить URL-адреса в вашем угловом маршрутизаторе из этого списка.