diff options
| author | Matias Niemelä | 2013-08-13 20:51:03 -0400 | 
|---|---|---|
| committer | Misko Hevery | 2013-09-03 17:06:49 -0700 | 
| commit | 4e15c4fb47e93c1f6619a09125bc9a350e39b113 (patch) | |
| tree | 6de258934679cf4a35583335b841db263b7c0f5f /src | |
| parent | 4382df03fa1962aed027742c1b463406c40653c9 (diff) | |
| download | angular.js-4e15c4fb47e93c1f6619a09125bc9a350e39b113.tar.bz2 | |
chore($rootScope): provide support to execute a function after the digest cycle is complete
Diffstat (limited to 'src')
| -rw-r--r-- | src/ng/rootScope.js | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/src/ng/rootScope.js b/src/ng/rootScope.js index 18c54434..d3b2762d 100644 --- a/src/ng/rootScope.js +++ b/src/ng/rootScope.js @@ -119,6 +119,7 @@ function $RootScopeProvider(){        this['this'] = this.$root =  this;        this.$$destroyed = false;        this.$$asyncQueue = []; +      this.$$postDigestQueue = [];        this.$$listeners = {};        this.$$isolateBindings = {};      } @@ -133,6 +134,7 @@ function $RootScopeProvider(){      Scope.prototype = { +      constructor: Scope,        /**         * @ngdoc function         * @name ng.$rootScope.Scope#$new @@ -167,6 +169,7 @@ function $RootScopeProvider(){            child.$root = this.$root;            // ensure that there is just one async queue per $rootScope and it's children            child.$$asyncQueue = this.$$asyncQueue; +          child.$$postDigestQueue = this.$$postDigestQueue;          } 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 @@ -494,6 +497,7 @@ function $RootScopeProvider(){          var watch, value, last,              watchers,              asyncQueue = this.$$asyncQueue, +            postDigestQueue = this.$$postDigestQueue,              length,              dirty, ttl = TTL,              next, current, target = this, @@ -566,6 +570,14 @@ function $RootScopeProvider(){          } while (dirty || asyncQueue.length);          clearPhase(); + +        while(postDigestQueue.length) { +          try { +            postDigestQueue.shift()(); +          } catch (e) { +            $exceptionHandler(e); +          } +        }        }, @@ -696,6 +708,10 @@ function $RootScopeProvider(){          this.$$asyncQueue.push(expr);        }, +      $$postDigest : function(expr) { +        this.$$postDigestQueue.push(expr); +      }, +        /**         * @ngdoc function         * @name ng.$rootScope.Scope#$apply | 
