aboutsummaryrefslogtreecommitdiffstats
path: root/src/Injector.js
diff options
context:
space:
mode:
authorMisko Hevery2011-10-26 21:36:19 -0700
committerMisko Hevery2011-11-14 16:39:32 -0800
commit9062996a0e6b449467f5b8ec06824086ca87f9cf (patch)
treef2ba7dfea1e0a06c9f25e5bb2e498758e63191b3 /src/Injector.js
parent411c1ae77eaeef1686274e9e4995641a8f83e765 (diff)
downloadangular.js-9062996a0e6b449467f5b8ec06824086ca87f9cf.tar.bz2
feat(injector): support $inject(fn($service){}) function invocation
Diffstat (limited to 'src/Injector.js')
-rw-r--r--src/Injector.js28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/Injector.js b/src/Injector.js
index 3a7fdeda..624246af 100644
--- a/src/Injector.js
+++ b/src/Injector.js
@@ -33,7 +33,9 @@
* `injector.eager()`
*/
function createInjector(factories) {
- var instanceCache = {$injector: injector};
+ var instanceCache = {
+ $injector: injector
+ };
factories = factories || angularService;
injector.invoke = invoke;
@@ -42,19 +44,23 @@ function createInjector(factories) {
if (factory.$eager)
injector(name);
});
- return injector;
+ return instanceCache.$injector;
function injector(serviceId, path){
- if (!(serviceId in instanceCache)) {
- var factory = factories[serviceId];
- path = path || [];
- path.unshift(serviceId);
- if (!factory) throw Error("Unknown provider for '" + path.join("' <- '") + "'.");
- inferInjectionArgs(factory);
- instanceCache[serviceId] = invoke(null, factory, [], path);
- path.shift();
+ if (typeof serviceId == 'string') {
+ if (!(serviceId in instanceCache)) {
+ var factory = factories[serviceId];
+ path = path || [];
+ path.unshift(serviceId);
+ if (!factory) throw Error("Unknown provider for '" + path.join("' <- '") + "'.");
+ inferInjectionArgs(factory);
+ instanceCache[serviceId] = invoke(null, factory, [], path);
+ path.shift();
+ }
+ return instanceCache[serviceId];
+ } else {
+ return invoke(null, serviceId, path);
}
- return instanceCache[serviceId];
}
function invoke(self, fn, args, path){