Легкие контроллеры с AngularJS
Кто не знает, есть такая штука ui-router. Замена стандартного роутера Ангуляра. Учитывая, что в Ангуляре 2.0 планируют запилить нечто подобное, вскоре этот роутер станет стандартом.С помощью него можно строить приложение, например, так: Модуль main
$stateProvider.state ('main', { abstract: true views: { body: { templateUrl: '/main/views/body/template.html' }, 'header@body': { controller: 'mainBodyHeader' templateUrl: '/main/views/body/header/template.html' }, 'footer@body': { controller: 'mainBodyFooter' templateUrl: '/main/views/body/footer/template.html' } } }); /main/views/body/template.html
$stateProvider.state ('article', {
parent: 'main',
abstract: true,
views: {
'content@body': {
templateUrl: '/article/views/content/template.html'
},
'navigation@article': {
controller: 'articleContentNavigation'
templateUrl: '/article/views/content/navigation/template.html'
},
'sidebar@article': {
controller: 'articleContentSidebar'
templateUrl: '/article/views/content/sidebar/template.html'
},
'list@article': {
controller: 'articleContentList'
templateUrl: '/article/views/content/list/template.html'
}
}
});
/article/views/content/template.html
app.directive ('demo', function () { return { templateUrl: '/directives/demo/template.html', controller: 'demo' }; }); Еще есть директивы ng-include и ng-controller, которые, в общем, не нужны, но могут помочь, если пользуетесь стандартным роутером.
К чему это я всё пишу? К тому, что проблема толстых контроллеров высосана из пальца. Используя стандартные средства можно написать сколь угодно большое приложение, где средний контроллер будет занимать 200 строек кода.