aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ng/rootScope.js2
-rw-r--r--test/ng/rootScopeSpec.js13
2 files changed, 15 insertions, 0 deletions
diff --git a/src/ng/rootScope.js b/src/ng/rootScope.js
index 06609862..2e76d6ee 100644
--- a/src/ng/rootScope.js
+++ b/src/ng/rootScope.js
@@ -165,6 +165,8 @@ function $RootScopeProvider(){
if (isolate) {
child = new Scope();
child.$root = this.$root;
+ // ensure that there is just one async queue per $rootScope and it's children
+ child.$$asyncQueue = this.$$asyncQueue;
} else {
Child = function() {}; // should be anonymous; This is so that when the minifier munges
// the name it does not become random set of chars. These will then show up as class
diff --git a/test/ng/rootScopeSpec.js b/test/ng/rootScopeSpec.js
index 15990c96..049258cf 100644
--- a/test/ng/rootScopeSpec.js
+++ b/test/ng/rootScopeSpec.js
@@ -692,6 +692,19 @@ describe('Scope', function() {
expect($rootScope.log).toBe('12');
}));
+
+ it('should operate only with a single queue across all child and isolate scopes', inject(function($rootScope) {
+ var childScope = $rootScope.$new();
+ var isolateScope = $rootScope.$new(true);
+
+ $rootScope.$evalAsync('rootExpression');
+ childScope.$evalAsync('childExpression');
+ isolateScope.$evalAsync('isolateExpression');
+
+ expect(childScope.$$asyncQueue).toBe($rootScope.$$asyncQueue);
+ expect(isolateScope.$$asyncQueue).toBe($rootScope.$$asyncQueue);
+ expect($rootScope.$$asyncQueue).toEqual(['rootExpression', 'childExpression', 'isolateExpression']);
+ }));
});