Angular:

http://angularjs.org/

by mrajcok

HTML

<div ng-controller="MyCtrl">
    See console for output.
    <div d1>
      <div d2></div>
    </div>
</div>

JavaScript

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

myApp.directive('d1', function() {
    return {
        controller: function($scope) {
            console.log('d1 - ctrl');
            $scope.d1_ctrl = 'd1_ctrl';
        },
        link: function(scope) {
            console.log('d1 - link');
            scope.d1_link = 'd1_link';
        }
    }
});
myApp.directive('d2', function() {
    return {
        controller: function($scope) {
            console.log('d2 - ctrl');
            console.log('d2, d1_ctrl =', $scope.d1_ctrl);
            console.log('d2 d1_link =',  $scope.d1_link);
        },
        link: function(scope) {
            console.log('d2 - link');
            console.log('d2, d1_ctrl =',scope.d1_ctrl);
            console.log('d2 d1_link =', scope.d1_link);
        }
    }
});

function MyCtrl($scope) {
}