$digest behaviour research 2

by Valentin Sarychev

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.js"></script>
<div ng-app="myApp">
    <abc value="value"></abc>
    <pre>{{value | json}}</pre>
</div>

JavaScript

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

m.run(function($rootScope) {
    $rootScope.value = {
        x: '123'
    };
    setTimeout(function() {
        // прикрутить логгеры к $digest скопов
        $rootScope.$digest = _.flowRight($rootScope.$digest, function() {
            console.log('$rootScope digest has been invoked');
        });
    }, 0);
});

m.directive('abc', function() {
    return {
        scope: {
            value: '='
        },
        template: '<input type="text">',
        link: function(scope, iElement) {
            var input = iElement.children();
            input.val(scope.value.x);
            input.on('input blur', function() {
                scope.value.x = angular.element(this).val();
                
                // scope.$digest();
                scope.$parent.$digest();
            });
        }
    };
});