diff options
| author | Misko Hevery | 2011-10-17 16:56:56 -0700 |
|---|---|---|
| committer | Misko Hevery | 2011-11-14 16:39:31 -0800 |
| commit | 48697a2b86dbb12ea8de64cc5fece7caf68b321e (patch) | |
| tree | 1fa50659f0bb5de2640dea2a2e5bb5628f2bb14a /src/Injector.js | |
| parent | 93b777c916ccff243c5a6080bf5f39860ac7bf39 (diff) | |
| download | angular.js-48697a2b86dbb12ea8de64cc5fece7caf68b321e.tar.bz2 | |
refactor(injector): turn scope into a service
- turn scope into a $rootScope service.
- injector is now a starting point for creating angular application.
- added inject() method which wraps jasmine its/beforeEach/afterEach,
and which allows configuration and injection of services.
- refactor tests to use inject() where possible
BREAK:
- removed angular.scope() method
Diffstat (limited to 'src/Injector.js')
| -rw-r--r-- | src/Injector.js | 34 |
1 files changed, 11 insertions, 23 deletions
diff --git a/src/Injector.js b/src/Injector.js index d6cf15c2..ae584364 100644 --- a/src/Injector.js +++ b/src/Injector.js @@ -9,17 +9,11 @@ * Creates an injector function that can be used for retrieving services as well as for * dependency injection (see {@link guide/dev_guide.di dependency injection}). * - * Angular creates an injector automatically for the root scope and it is available as the - * {@link angular.scope.$service $service} property. Creating an injector doesn't automatically - * create all of the `$eager` {@link angular.service services}. You have to call `injector.eager()` - * to initialize them. + * Creating an injector doesn't automatically create all of the `$eager` + * {@link angular.service services}. You have to call `injector.eager()` to initialize them. * - * @param {Object=} [factoryScope={}] The `this` for the service factory function. * @param {Object.<string, function()>=} [factories=angular.service] Map of the service factory * functions. - * @param {Object.<string, function()>=} [instanceCache={}] Place where instances of services are - * saved for reuse. Can also be used to override services specified by `serviceFactory` - * (useful in tests). * @returns {function()} Injector function: * * * `injector(serviceName)`: @@ -38,30 +32,24 @@ * * An `eager` property which is used to initialize the eager services. * `injector.eager()` */ -function createInjector(factoryScope, factories, instanceCache) { +function createInjector(factories) { + var instanceCache = {$injector: injector}; factories = factories || angularService; - instanceCache = instanceCache || {}; - factoryScope = factoryScope || {}; - injector.invoke = invoke; - injector.eager = function() { - forEach(factories, function(factory, name){ - if (factory.$eager) - injector(name); + injector.invoke = invoke; - if (factory.$creation) - throw new Error("Failed to register service '" + name + - "': $creation property is unsupported. Use $eager:true or see release notes."); - }); - }; + forEach(factories, function(factory, name){ + if (factory.$eager) + injector(name); + }); return injector; function injector(value){ if (!(value in instanceCache)) { var factory = factories[value]; - if (!factory) throw Error("Unknown provider for '"+value+"'."); + if (!factory) throw Error("Unknown provider for '" + value + "'."); inferInjectionArgs(factory); - instanceCache[value] = invoke(factoryScope, factory); + instanceCache[value] = invoke(null, factory); } return instanceCache[value]; } |
