Edit in JSFiddle

angular.module('app', [])
	.run(['$rootScope', function($rootScope){
        $rootScope.data = {counter: 0};
    }])
	.controller('BlackController', ['$scope', function($scope){
        $scope.digestTest = function(){
            $scope.data.counter++;
            $scope.$digest();
        };

        $scope.applyTest = function(){
            $scope.data.counter++;
            $scope.$apply();
        };
	}])
	.controller('RedController', ['$scope', function($scope){
        $scope.digestTest = function(){
            $scope.data.counter++;
            $scope.$digest();
        };

        $scope.applyTest = function(){
            $scope.data.counter++;
            $scope.$apply();
        };
	}])
	.controller('GreenController', ['$scope', function($scope){
        $scope.digestTest = function(){
            $scope.data.counter++;
            $scope.$digest();
        };

        $scope.applyTest = function(){
            $scope.data.counter++;
            $scope.$apply();
        };
    }])
	.controller('BlueController', ['$scope', function($scope){
        $scope.digestTest = function(){
            $scope.data.counter++;
            $scope.$digest();
        };

        $scope.applyTest = function(){
            $scope.data.counter++;
            $scope.$apply();
        };
    }])
	.directive('testClick', [function(){
    	return {
        	restrict: 'A',
            scope: {
            	testClick: '&'
            },
            link: function(scope, el){
            	el.bind('click', function(){
                    scope.testClick();
                });
            }
        };
    }]);
<body ng-app="app">
    <div ng-controller="BlackController" class="black-controller">
        <button test-click="digestTest()">Мой digest</button>
        <button test-click="applyTest()">Мой apply</button>
        <button disabled>Счётчик: {{data.counter}}</button>
    </div>
    <div ng-controller="RedController" class="red-controller">
        <button test-click="digestTest()">Мой digest</button>
        <button test-click="applyTest()">Мой apply</button>
        <button disabled>Счётчик: {{data.counter}}</button>
        <div ng-controller="GreenController" class="green-controller">
            <button test-click="digestTest()">Мой digest</button>
            <button test-click="applyTest()">Мой apply</button>
            <button disabled>Счётчик: {{data.counter}}</button>
            <div ng-controller="BlueController" class="blue-controller">
                <button test-click="digestTest()">Мой digest</button>
                <button test-click="applyTest()">Мой apply</button>
                <button disabled>Счётчик: {{data.counter}}</button>
            </div>
        </div>
    </div>
</body>
div {
    height: 100%;
    padding: 30px;
}

button {
    border: none;
    background: #FFF;
    color: #444;
    padding: 5px 15px;
    position: relative;
    left: 10px;
}

.counter {
    color: #FFF;
}

.red-controller {
    height: 100px;
    background: red;
}

.black-controller {
    background: black;
}

.green-controller {
    background: green;
}

.blue-controller {
    background: blue;
}