AngularJS: ¿Debería convertir la función de enlace de la directiva a un controlador?

Escuché que es una buena práctica usar elcontrollerAs sintaxis junto conbindToController: true en directivas que usan un alcance aislado. Referenciasuno, dos

Supongamos que tengo una directiva como esta:

angular.module('MyModule').directive('MyDirective', function(User) {
  return {
    scope: {
      name: '='
    },
    templateUrl: 'my-template.html',
    link: function(scope) {
      scope.User = User;
      scope.doSomething = function() {
        // Do something cool
      };
    }
  };
});
<!-- my-template.html -->
<div>
  User Id: {{ User.id }}
  Name: {{ name }}
  <button ng-click="doSomething()">Do it</button>
</div>

Como puede ver, no hay controlador en esta directiva. Pero, para poder aprovecharcontrollerAs ybindToController: true Tengo que tener un controlador.

¿Es la mejor práctica convertir la función de enlace a un controlador?

angular.module('MyModule').directive('MyDirective', function(User) {
  return {
    scope: {
      name: '='
    },
    templateUrl: 'my-template.html',
    bindToController: true,
    controllerAs: 'myCtrl',
    controller: function() {
      this.User = User;
      this.doSomething = function() {
        // Do something cool
      };
    }
  };
});
<!-- my-template.html -->
<div>
  User Id: {{ myCtrl.User.id }}
  Name: {{ myCtrl.name }}
  <button ng-click="myCtrl.doSomething()">Do it</button>
</div>

Entiendo que el controlador de la directiva debe usarse como un mecanismo para exponer la API de la directiva para una comunicación de directiva a directiva.

¿Alguien podría arrojar luz sobre cuál es la mejor práctica en estos días, teniendo en mente Angular 2.0?

Respuestas a la pregunta(5)

Su respuesta a la pregunta