angular .module('app', []); // main.js function MainCtrl() { this.name = 'Todd Motto'; } angular .module('app') .controller('MainCtrl', MainCtrl); // foo.js function FooDirCtrl() { } function fooDirective() { function link($scope) { } return { restrict: 'E', scope: { name: '=' }, controller: 'FooDirCtrl', controllerAs: 'vm', template: [ '<div><input ng-model="name"></div>' ].join(''), link: link }; } angular .module('app') .directive('fooDirective', fooDirective) .controller('FooDirCtrl', FooDirCtrl);