Angular directives communication

example via rootScope

by Kyrylo Slatin

HTML

<div ng-controller="ctrl">
     <my-directive list="directive1"></my-directive>
    <my-directive list="directive2"></my-directive>
    <my-directive list="directive3"></my-directive>
    <my-directive list="directive4"></my-directive>
    
</div>

CSS

.customContainer {
    min-width: 40px;
    min-height: 40px;
    background-color: yellow;
}

JavaScript

angular.module('app', []);
angular.module('app').controller('ctrl', function ($scope, $element, $rootScope, $compile) {
});
angular.module('app').directive('myDirective', function ($rootScope) {
    return {
        restrict: 'AE',
        scope: {
            list: '@'
        },
        template: '<div class="blah">{{list}} <button ng-click="toggleOpen()">{{isOpen}}</button></div>',
        link: function (scope, elem, attrs) {
            scope.isOpen = false;
            $rootScope.$on('openChanged', function(event, open){
                scope.isOpen = open;
            });
            scope.toggleOpen = function(){
                var wasOpen = scope.isOpen;
                $rootScope.$broadcast('openChanged', false);
                scope.isOpen = !wasOpen;
            }
        }
    }
});
angular.bootstrap(document, ['app']);