AngularJS: use controller constructor or Linking function? or: do we really need linking function?

When defining a new directive, is there any important point for a link function? Usually a directive has a controller class defined, and this class is injectable with the $scope and the $element. So, we could put all watchers and (click) handlers in that controller constructor function.

Yes, I know there're some specific parameters sent to the link function (i.e. attrs, required controller), but I wondered if for the 'standard' stuff there's a need in it

many thanks for any thought Lior

The point of using a directive controller is that other directives can request that controller and interact with you. If you do it all in the linking function, other directives can't interact like that. Most directives doesn't need a controller, but it's very useful sometimes and a good example of that is ngModelController. You can read more about it here http://docs.angularjs.org/#!/api/ng.directive:ngModel.NgModelController

So don't just put everything in a directive controller if you don't need to. The meat of a directive should go into the linking function, unless you know that - and why - you should put it in the controller or compile function.