AngularJS: Должен ли я преобразовать функцию связывания директивы в контроллер?

Я слышал, что это хорошая практика, чтобы использоватьcontrollerAs синтаксис вместе сbindToController: true в директивах, которые используют изолированную область. Рекомендации:один, два

Предположим, у меня есть такая директива:

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>

Как видите, в этой директиве нет контроллера. Но, чтобы иметь возможность использоватьcontrollerAs а такжеbindToController: true У меня должен быть контроллер.

Является ли лучшая практика для преобразования функции связывания в контроллер?

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>

Насколько я понимаю, контроллер директивы должен использоваться в качестве механизма для представления API директивы для связи директива-директива.

Может ли кто-нибудь пролить свет на лучшую практику в наши дни, имея в виду Angular 2.0?

Ответы на вопрос(5)

Ваш ответ на вопрос