diff options
| author | Misko Hevery | 2012-02-22 13:28:42 -0800 |
|---|---|---|
| committer | Misko Hevery | 2012-02-22 13:28:42 -0800 |
| commit | 80edcadb1dd418dcf5adf85704c6693940c8bb28 (patch) | |
| tree | 5741696b48468a3387b6763559bff6b2be0a150b /src | |
| parent | c27a56f4da9bf89e471ac6597c135e2f19814f17 (diff) | |
| download | angular.js-80edcadb1dd418dcf5adf85704c6693940c8bb28.tar.bz2 | |
feat($provide): added constant
Diffstat (limited to 'src')
| -rw-r--r-- | src/Injector.js | 25 | ||||
| -rw-r--r-- | src/loader.js | 17 |
2 files changed, 38 insertions, 4 deletions
diff --git a/src/Injector.js b/src/Injector.js index c24cbb51..c45e7dd0 100644 --- a/src/Injector.js +++ b/src/Injector.js @@ -246,14 +246,29 @@ function inferInjectionArgs(fn) { * A short hand for configuring services if the `$get` method is a constant. * * @param {string} name The name of the instance. NOTE: the provider will be available under `name + 'Provide'` key. - * @param {function()} value The $getFn for the instance creation. Internally this is a short hand for - * `$provide.service(name, {$get:function(){ return value; }})`. + * @param {*} value The value. * @returns {Object} registered provider instance */ /** * @ngdoc method + * @name angular.module.AUTO.$provide#constant + * @methodOf angular.module.AUTO.$provide + * @description + * + * A constant value, but unlike {@link angular.module.AUTO.$provide#value value} it can be injected + * into configuration function (other modules) and it is not interceptable by + * {@link angular.module.AUTO.$provide#decorator decorator}. + * + * @param {string} name The name of the constant. + * @param {*} value The constant value. + * @returns {Object} registered instance + */ + + +/** + * @ngdoc method * @name angular.module.AUTO.$provide#decorator * @methodOf angular.module.AUTO.$provide * @description @@ -282,6 +297,7 @@ function createInjector(modulesToLoad) { service: supportObject(service), factory: supportObject(factory), value: supportObject(value), + constant: supportObject(constant), decorator: decorator } }, @@ -328,6 +344,11 @@ function createInjector(modulesToLoad) { function value(name, value) { return factory(name, valueFn(value)); } + function constant(name, value) { + providerCache[name] = value; + instanceCache[name] = value; + } + function decorator(serviceName, decorFn) { var origProvider = providerInjector.get(serviceName + providerSuffix), orig$get = origProvider.$get; diff --git a/src/loader.js b/src/loader.js index d1753ac8..604beaef 100644 --- a/src/loader.js +++ b/src/loader.js @@ -142,6 +142,18 @@ function setupModuleLoader(window) { /** * @ngdoc method + * @name angular.Module#constant + * @methodOf angular.Module + * @param {string} name constant name + * @param {*} object Constant value. + * @description + * Because the constant are fixed, they get applied before other provide methods. + * See {@link angular.module.AUTO.$provide#constant $provide.constant()}. + */ + constant: invokeLater('$provide', 'constant', 'unshift'), + + /** + * @ngdoc method * @name angular.Module#filter * @methodOf angular.Module * @param {string} name filter name @@ -199,11 +211,12 @@ function setupModuleLoader(window) { /** * @param {string} provider * @param {string} method + * @param {String=} insertMethod * @returns {angular.Module} */ - function invokeLater(provider, method) { + function invokeLater(provider, method, insertMethod) { return function() { - invokeQueue.push([provider, method, arguments]); + invokeQueue[insertMethod || 'push']([provider, method, arguments]); return moduleInstance; } } |
