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?