diff options
Diffstat (limited to 'src/ng/rootScope.js')
| -rw-r--r-- | src/ng/rootScope.js | 184 | 
1 files changed, 93 insertions, 91 deletions
| diff --git a/src/ng/rootScope.js b/src/ng/rootScope.js index d1c62317..121ece08 100644 --- a/src/ng/rootScope.js +++ b/src/ng/rootScope.js @@ -28,7 +28,7 @@  /**   * @ngdoc object - * @name angular.module.ng.$rootScopeProvider + * @name ng.$rootScopeProvider   * @description   *   * Provider for the $rootScope service. @@ -36,8 +36,8 @@  /**   * @ngdoc function - * @name angular.module.ng.$rootScopeProvider#digestTtl - * @methodOf angular.module.ng.$rootScopeProvider + * @name ng.$rootScopeProvider#digestTtl + * @methodOf ng.$rootScopeProvider   * @description   *   * Sets the number of digest iteration the scope should attempt to execute before giving up and @@ -51,10 +51,10 @@  /**   * @ngdoc object - * @name angular.module.ng.$rootScope + * @name ng.$rootScope   * @description   * - * Every application has a single root {@link angular.module.ng.$rootScope.Scope scope}. + * Every application has a single root {@link ng.$rootScope.Scope scope}.   * All other scopes are child scopes of the root scope. Scopes provide mechanism for watching the model and provide   * event processing life-cycle. See {@link guide/scope developer guide on scopes}.   */ @@ -73,12 +73,12 @@ function $RootScopeProvider(){      /**       * @ngdoc function -     * @name angular.module.ng.$rootScope.Scope +     * @name ng.$rootScope.Scope       *       * @description -     * A root scope can be retrieved using the {@link angular.module.ng.$rootScope $rootScope} key from the -     * {@link angular.module.AUTO.$injector $injector}. Child scopes are created using the -     * {@link angular.module.ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when +     * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the +     * {@link AUTO.$injector $injector}. Child scopes are created using the +     * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when       * compiled HTML template is executed.)       *       * Here is a simple scope snippet to show how you can interact with the scope. @@ -121,7 +121,7 @@ function $RootScopeProvider(){       *       *       * @param {Object.<string, function()>=} providers Map of service factory which need to be provided -     *     for the current scope. Defaults to {@link angular.module.ng}. +     *     for the current scope. Defaults to {@link ng}.       * @param {Object.<string, *>=} instanceCache Provides pre-instantiated services which should       *     append/override services provided by `providers`. This is handy when unit-testing and having       *     the need to override a default service. @@ -140,8 +140,8 @@ function $RootScopeProvider(){      /**       * @ngdoc property -     * @name angular.module.ng.$rootScope.Scope#$id -     * @propertyOf angular.module.ng.$rootScope.Scope +     * @name ng.$rootScope.Scope#$id +     * @propertyOf ng.$rootScope.Scope       * @returns {number} Unique scope ID (monotonically increasing alphanumeric sequence) useful for       *   debugging.       */ @@ -150,18 +150,18 @@ function $RootScopeProvider(){      Scope.prototype = {        /**         * @ngdoc function -       * @name angular.module.ng.$rootScope.Scope#$new -       * @methodOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$new +       * @methodOf ng.$rootScope.Scope         * @function         *         * @description -       * Creates a new child {@link angular.module.ng.$rootScope.Scope scope}. +       * Creates a new child {@link ng.$rootScope.Scope scope}.         * -       * The parent scope will propagate the {@link angular.module.ng.$rootScope.Scope#$digest $digest()} and -       * {@link angular.module.ng.$rootScope.Scope#$digest $digest()} events. The scope can be removed from the scope -       * hierarchy using {@link angular.module.ng.$rootScope.Scope#$destroy $destroy()}. +       * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} and +       * {@link ng.$rootScope.Scope#$digest $digest()} events. The scope can be removed from the scope +       * hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.         * -       * {@link angular.module.ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is desired for +       * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is desired for         * the scope and its child scopes to be permanently detached from the parent and thus stop         * participating in model change detection and listener notification by invoking.         * @@ -209,17 +209,17 @@ function $RootScopeProvider(){        /**         * @ngdoc function -       * @name angular.module.ng.$rootScope.Scope#$watch -       * @methodOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$watch +       * @methodOf ng.$rootScope.Scope         * @function         *         * @description         * Registers a `listener` callback to be executed whenever the `watchExpression` changes.         * -       * - The `watchExpression` is called on every call to {@link angular.module.ng.$rootScope.Scope#$digest $digest()} and -       *   should return the value which will be watched. (Since {@link angular.module.ng.$rootScope.Scope#$digest $digest()} +       * - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#$digest $digest()} and +       *   should return the value which will be watched. (Since {@link ng.$rootScope.Scope#$digest $digest()}         *   reruns when it detects changes the `watchExpression` can execute multiple times per -       *   {@link angular.module.ng.$rootScope.Scope#$digest $digest()} and should be idempotent.) +       *   {@link ng.$rootScope.Scope#$digest $digest()} and should be idempotent.)         * - The `listener` is called only when the value from the current `watchExpression` and the         *   previous call to `watchExpression' are not equal (with the exception of the initial run         *   see below). The inequality is determined according to @@ -231,13 +231,13 @@ function $RootScopeProvider(){         *   limit is 100 to prevent infinity loop deadlock.         *         * -       * If you want to be notified whenever {@link angular.module.ng.$rootScope.Scope#$digest $digest} is called, +       * If you want to be notified whenever {@link ng.$rootScope.Scope#$digest $digest} is called,         * you can register an `watchExpression` function with no `listener`. (Since `watchExpression`, -       * can execute multiple times per {@link angular.module.ng.$rootScope.Scope#$digest $digest} cycle when a change is +       * can execute multiple times per {@link ng.$rootScope.Scope#$digest $digest} cycle when a change is         * detected, be prepared for multiple calls to your listener.)         *         * After a watcher is registered with the scope, the `listener` fn is called asynchronously -       * (via {@link angular.module.ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the +       * (via {@link ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the         * watcher. In rare cases, this is undesirable because the listener is called when the result         * of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you         * can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the @@ -245,7 +245,7 @@ function $RootScopeProvider(){         *         *         * # Example -         <pre> +       * <pre>             // let's assume that scope was dependency injected as the $rootScope             var scope = $rootScope;             scope.name = 'misko'; @@ -262,12 +262,12 @@ function $RootScopeProvider(){             scope.name = 'adam';             scope.$digest();             expect(scope.counter).toEqual(1); -         </pre> +       * </pre>         *         *         *         * @param {(function()|string)} watchExpression Expression that is evaluated on each -       *    {@link angular.module.ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers a +       *    {@link ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers a         *    call to the `listener`.         *         *    - `string`: Evaluated as {@link guide/expression expression} @@ -313,32 +313,32 @@ function $RootScopeProvider(){        /**         * @ngdoc function -       * @name angular.module.ng.$rootScope.Scope#$digest -       * @methodOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$digest +       * @methodOf ng.$rootScope.Scope         * @function         *         * @description -       * Process all of the {@link angular.module.ng.$rootScope.Scope#$watch watchers} of the current scope and its children. -       * Because a {@link angular.module.ng.$rootScope.Scope#$watch watcher}'s listener can change the model, the -       * `$digest()` keeps calling the {@link angular.module.ng.$rootScope.Scope#$watch watchers} until no more listeners are +       * Process all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and its children. +       * Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change the model, the +       * `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers} until no more listeners are         * firing. This means that it is possible to get into an infinite loop. This function will throw         * `'Maximum iteration limit exceeded.'` if the number of iterations exceeds 10.         *         * Usually you don't call `$digest()` directly in -       * {@link angular.module.ng.$compileProvider.directive.ngController controllers} or in -       * {@link angular.module.ng.$compileProvider.directive directives}. -       * Instead a call to {@link angular.module.ng.$rootScope.Scope#$apply $apply()} (typically from within a -       * {@link angular.module.ng.$compileProvider.directive directives}) will force a `$digest()`. +       * {@link ng.directive:ngController controllers} or in +       * {@link ng.$compileProvider.directive directives}. +       * Instead a call to {@link ng.$rootScope.Scope#$apply $apply()} (typically from within a +       * {@link ng.$compileProvider.directive directives}) will force a `$digest()`.         *         * If you want to be notified whenever `$digest()` is called, -       * you can register a `watchExpression` function  with {@link angular.module.ng.$rootScope.Scope#$watch $watch()} +       * you can register a `watchExpression` function  with {@link ng.$rootScope.Scope#$watch $watch()}         * with no `listener`.         *         * You may have a need to call `$digest()` from within unit-tests, to simulate the scope         * life-cycle.         *         * # Example -         <pre> +       * <pre>             var scope = ...;             scope.name = 'misko';             scope.counter = 0; @@ -356,7 +356,7 @@ function $RootScopeProvider(){             scope.name = 'adam';             scope.$digest();             expect(scope.counter).toEqual(1); -         </pre> +       * </pre>         *         */        $digest: function() { @@ -438,8 +438,8 @@ function $RootScopeProvider(){        /**         * @ngdoc event -       * @name angular.module.$rootScope.Scope#$destroy -       * @eventOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$destroy +       * @eventOf ng.$rootScope.Scope         * @eventType broadcast on scope being destroyed         *         * @description @@ -448,18 +448,18 @@ function $RootScopeProvider(){        /**         * @ngdoc function -       * @name angular.module.ng.$rootScope.Scope#$destroy -       * @methodOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$destroy +       * @methodOf ng.$rootScope.Scope         * @function         *         * @description         * Remove the current scope (and all of its children) from the parent scope. Removal implies -       * that calls to {@link angular.module.ng.$rootScope.Scope#$digest $digest()} will no longer +       * that calls to {@link ng.$rootScope.Scope#$digest $digest()} will no longer         * propagate to the current scope and its children. Removal also implies that the current         * scope is eligible for garbage collection.         *         * The `$destroy()` is usually used by directives such as -       * {@link angular.module.ng.$compileProvider.directive.ngRepeat ngRepeat} for managing the +       * {@link ng.directive:ngRepeat ngRepeat} for managing the         * unrolling of the loop.         *         * Just before a scope is destroyed a `$destroy` event is broadcasted on this scope. @@ -480,8 +480,8 @@ function $RootScopeProvider(){        /**         * @ngdoc function -       * @name angular.module.ng.$rootScope.Scope#$eval -       * @methodOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$eval +       * @methodOf ng.$rootScope.Scope         * @function         *         * @description @@ -489,14 +489,14 @@ function $RootScopeProvider(){         * expression are propagated (uncaught). This is useful when evaluating engular expressions.         *         * # Example -         <pre> -           var scope = angular.module.ng.$rootScope.Scope(); +       * <pre> +           var scope = ng.$rootScope.Scope();             scope.a = 1;             scope.b = 2;             expect(scope.$eval('a+b')).toEqual(3);             expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3); -         </pre> +       * </pre>         *         * @param {(string|function())=} expression An angular expression to be executed.         * @@ -511,8 +511,8 @@ function $RootScopeProvider(){        /**         * @ngdoc function -       * @name angular.module.ng.$rootScope.Scope#$evalAsync -       * @methodOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$evalAsync +       * @methodOf ng.$rootScope.Scope         * @function         *         * @description @@ -521,11 +521,11 @@ function $RootScopeProvider(){         * The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only that:         *         *   - it will execute in the current script execution context (before any DOM rendering). -       *   - at least one {@link angular.module.ng.$rootScope.Scope#$digest $digest cycle} will be performed after +       *   - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after         *     `expression` execution.         *         * Any exceptions from the execution of the expression are forwarded to the -       * {@link angular.module.ng.$exceptionHandler $exceptionHandler} service. +       * {@link ng.$exceptionHandler $exceptionHandler} service.         *         * @param {(string|function())=} expression An angular expression to be executed.         * @@ -539,39 +539,41 @@ function $RootScopeProvider(){        /**         * @ngdoc function -       * @name angular.module.ng.$rootScope.Scope#$apply -       * @methodOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$apply +       * @methodOf ng.$rootScope.Scope         * @function         *         * @description         * `$apply()` is used to execute an expression in angular from outside of the angular framework.         * (For example from browser DOM events, setTimeout, XHR or third party libraries).         * Because we are calling into the angular framework we need to perform proper scope life-cycle -       * of {@link angular.module.ng.$exceptionHandler exception handling}, -       * {@link angular.module.ng.$rootScope.Scope#$digest executing watches}. +       * of {@link ng.$exceptionHandler exception handling}, +       * {@link ng.$rootScope.Scope#$digest executing watches}.         *         * ## Life cycle         *         * # Pseudo-Code of `$apply()` -          function $apply(expr) { -            try { -              return $eval(expr); -            } catch (e) { -              $exceptionHandler(e); -            } finally { -              $root.$digest(); -            } -          } +       * <pre> +           function $apply(expr) { +             try { +               return $eval(expr); +             } catch (e) { +               $exceptionHandler(e); +             } finally { +               $root.$digest(); +             } +           } +       * </pre>         *         *         * Scope's `$apply()` method transitions through the following stages:         *         * 1. The {@link guide/expression expression} is executed using the -       *    {@link angular.module.ng.$rootScope.Scope#$eval $eval()} method. +       *    {@link ng.$rootScope.Scope#$eval $eval()} method.         * 2. Any exceptions from the execution of the expression are forwarded to the -       *    {@link angular.module.ng.$exceptionHandler $exceptionHandler} service. -       * 3. The {@link angular.module.ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the expression -       *    was executed using the {@link angular.module.ng.$rootScope.Scope#$digest $digest()} method. +       *    {@link ng.$exceptionHandler $exceptionHandler} service. +       * 3. The {@link ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the expression +       *    was executed using the {@link ng.$rootScope.Scope#$digest $digest()} method.         *         *         * @param {(string|function())=} exp An angular expression to be executed. @@ -600,12 +602,12 @@ function $RootScopeProvider(){        /**         * @ngdoc function -       * @name angular.module.ng.$rootScope.Scope#$on -       * @methodOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$on +       * @methodOf ng.$rootScope.Scope         * @function         *         * @description -       * Listen on events of a given type. See {@link angular.module.ng.$rootScope.Scope#$emit $emit} for discussion of +       * Listen on events of a given type. See {@link ng.$rootScope.Scope#$emit $emit} for discussion of         * event life cycle.         *         * @param {string} name Event name to listen on. @@ -638,25 +640,25 @@ function $RootScopeProvider(){        /**         * @ngdoc function -       * @name angular.module.ng.$rootScope.Scope#$emit -       * @methodOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$emit +       * @methodOf ng.$rootScope.Scope         * @function         *         * @description         * Dispatches an event `name` upwards through the scope hierarchy notifying the -       * registered {@link angular.module.ng.$rootScope.Scope#$on} listeners. +       * registered {@link ng.$rootScope.Scope#$on} listeners.         *         * The event life cycle starts at the scope on which `$emit` was called. All -       * {@link angular.module.ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get notified. +       * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get notified.         * Afterwards, the event traverses upwards toward the root scope and calls all registered         * listeners along the way. The event will stop propagating if one of the listeners cancels it.         * -       * Any exception emmited from the {@link angular.module.ng.$rootScope.Scope#$on listeners} will be passed -       * onto the {@link angular.module.ng.$exceptionHandler $exceptionHandler} service. +       * Any exception emmited from the {@link ng.$rootScope.Scope#$on listeners} will be passed +       * onto the {@link ng.$exceptionHandler $exceptionHandler} service.         *         * @param {string} name Event name to emit.         * @param {...*} args Optional set of arguments which will be passed onto the event listeners. -       * @return {Object} Event object, see {@link angular.module.ng.$rootScope.Scope#$on} +       * @return {Object} Event object, see {@link ng.$rootScope.Scope#$on}         */        $emit: function(name, args) {          var empty = [], @@ -696,25 +698,25 @@ function $RootScopeProvider(){        /**         * @ngdoc function -       * @name angular.module.ng.$rootScope.Scope#$broadcast -       * @methodOf angular.module.ng.$rootScope.Scope +       * @name ng.$rootScope.Scope#$broadcast +       * @methodOf ng.$rootScope.Scope         * @function         *         * @description         * Dispatches an event `name` downwards to all child scopes (and their children) notifying the -       * registered {@link angular.module.ng.$rootScope.Scope#$on} listeners. +       * registered {@link ng.$rootScope.Scope#$on} listeners.         *         * The event life cycle starts at the scope on which `$broadcast` was called. All -       * {@link angular.module.ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get notified. +       * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get notified.         * Afterwards, the event propagates to all direct and indirect scopes of the current scope and         * calls all registered listeners along the way. The event cannot be canceled.         * -       * Any exception emmited from the {@link angular.module.ng.$rootScope.Scope#$on listeners} will be passed -       * onto the {@link angular.module.ng.$exceptionHandler $exceptionHandler} service. +       * Any exception emmited from the {@link ng.$rootScope.Scope#$on listeners} will be passed +       * onto the {@link ng.$exceptionHandler $exceptionHandler} service.         *         * @param {string} name Event name to emit.         * @param {...*} args Optional set of arguments which will be passed onto the event listeners. -       * @return {Object} Event object, see {@link angular.module.ng.$rootScope.Scope#$on} +       * @return {Object} Event object, see {@link ng.$rootScope.Scope#$on}         */        $broadcast: function(name, args) {          var target = this, | 
