If u using controller & controllerAs in directive, then the link()'s 4th param 'controller' will refer to the controller u defined before.
function MessageController(){ var vm = this; vm.message = "Hello"; }function greeting(){ function link(scope, element, attrs, ctrl){ ctrl.message = ctrl.message + ' ' + scope.name; } return { controller: 'MessageController', controllerAs: 'vm', link: link, scope: { name: '@' }, template: '{ {vm.message}}
' };}angular.module('app', []) .directive('greeting', greeting) .controller('MessageController', MessageController);
JS Bin