если у вас есть две независимые друг от друга директивы, они и должны быть независимыми. Не нужно даже и пытаться сделать связь через скопы/ивенты и т.д.
Если вам нужно, что бы вложенная директива имела доступ к директиве родителю. то используйте связь через контроллер родительской директивы (читать про опцию require при определении директивы). Например:
angular.module('foo', [])
.directive('foo', function () {
return {
restrict: 'E',
controller: function ($scope) {
this.$childs = [];
this.appendChild = function (child) {
this.$childs.push(child);
}
}
}
})
.directive('bar', function () {
return {
restrict: 'E',
requires: '^foo', // говорит о том что директива должна быть вложена в другую
link: function (scope, el, attr, ctrl) {
ctrl.appendChild(el);
}
}
});