Angular:

http://angularjs.org/

HTML

<div ng-controller="MyCtrl">
  <div directive-foo></div>
</div>

JavaScript

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

app.directive('directiveFoo', function() {
    return {
        template: '<div directive-bar="123">bar</div>',
        replace: true,
        controller: function() {
            console.log('in foo ctrl');
            this.isFooAlive = function() {
                return 'Foo is alive and well';
            }
        }
    }
});
app.directive('directiveBar', function() {
    return {
        controller: function() {
            console.log('in bar ctrl');
        },
        require: 'directiveFoo',
        link: function(scope, element, attrs, fooCtrl) {
            console.log(fooCtrl.isFooAlive());
        }
    }
});

function MyCtrl($scope) {
}