Angular: Empty Fiddle

http://angularjs.org/

HTML

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.1/angular.min.js"></script>
<div ng-controller="MyCtrl">
	    <br>
	    <my-directive my-name>Hello, {{name}}!</my-directive>
	</div>

JavaScript

var myApp = angular.module('myApp',[]);

  myApp.controller('MyCtrl', function ($scope) {
    $scope.name = 'Superhero';
  });

  myApp.directive('myDirective', function($timeout) {
    return {
      require: 'myName',
      link: function(scope, element, attrs, myNameCtrl) {
        $timeout(function() {
          myNameCtrl.setName("Steve");
        }, 9000);
      }
    };
  });

	myApp.directive('myName', function($timeout) {
  
     var controller = ['$scope', function ($scope) {
     
     // As I tried, this function can be only accessed from the link function of this directive
     $scope.setName = function(name) {
      $scope.name = name;
      console.log("Inside $scope.setName defined in the directive myName");
     };

     // As I tried, this function can accessed from inside/outside of this directive
     this.setName = function(name) {
      $scope.name = name;
      console.log("Inside this.setName defined in the directive myName");
     };
     
    }];
    
    return {
      controller: controller,
      link: function(scope, element, attrs, localCtrl) {

        $timeout(function() {
          localCtrl.setName("Charles");
        }, 3000);

        $timeout(function() {
          scope.setName("David");
        }, 6000);
      } // End of link function
    };
	});