$digest behaviour research
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"></div>
JavaScript
angular.module('myApp', []).run(function($rootScope) {
var isolatedParentScope = $rootScope.$new(true);
var childScope = isolatedParentScope.$new(false);
var isolatedChildScope = isolatedParentScope.$new(true);
setTimeout(function() {
// прикрутить логгеры к $digest скопов
$rootScope.$digest = _.flowRight($rootScope.$digest, function() {
console.log(' - $rootScope digest has been invoked');
});
isolatedParentScope.$digest = _.flowRight(isolatedParentScope.$digest, function() {
console.log(' - isolatedParentScope digest has been invoked');
});
childScope.$digest = _.flowRight(childScope.$digest, function() {
console.log(' - childScope digest has been invoked');
});
isolatedChildScope.$digest = _.flowRight(isolatedChildScope.$digest, function() {
console.log(' - isolatedChildScope digest has been invoked');
});
console.log('isolatedChildScope.$digest()');
isolatedChildScope.$digest();
console.log('childScope.$digest()');
childScope.$digest();
// NOTE дайджест на childScope породил дайджест на isolatedParentScope тоже!
}, 0);
});