В style guide, в разделе директив предлагается шаблон, в котором логику директивы предлагается оформлять в контроллер:
шаблон
По этому поводу возникли вопросы:
1. Правильно ли понимаю, что в функции link должен размещаться код по работе с DOM, а логика в контроллере?
2. Как быть, например, с директивой которая использует ngModel ? Ведь в контроллере мы не сможем использовать ngModelController, и придется размазывать логику уже по методу link, что вроде как неверно:
angular
.module('directives.selectBox', [])
.directive('selectBox', selectBox);
function selectBox() {
return {
restrict : 'E',
require : 'ngModel',
scope : { },
templateUrl : 'common/directives/selectBox/selectBox.html',
controller : SelectBoxController,
link: link
};
}
3. Почему вообще логику предлагается выносить в контроллер, ведь она должна быть в сервисе, а контроллер только для передачи параметров в сервис?
4. Насколько логичен такой подход использования контроллера, чтобы получить доступ к ngModelController ?
function link (scope, element, attrs, ngModelController){
scope.vm = new SelectBoxController(scope, element, ngModelController);
}