aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisko Hevery2013-05-01 20:55:25 -0400
committerMisko Hevery2013-05-02 15:22:16 -0400
commit80341cb9badd952fdc80094df4123629313b4cc4 (patch)
treed2b6a1f4d230de39617622a378c350433c96c7f8
parent9956baedd73d5e8d0edd04c9eed368bd3988444b (diff)
downloadangular.js-80341cb9badd952fdc80094df4123629313b4cc4.tar.bz2
feat(injector): add has method for querying
Closes #2556
-rw-r--r--src/auto/injector.js5
-rw-r--r--src/ng/animation.js10
-rw-r--r--test/auto/injectorSpec.js9
3 files changed, 16 insertions, 8 deletions
diff --git a/src/auto/injector.js b/src/auto/injector.js
index b2795693..6b2865ef 100644
--- a/src/auto/injector.js
+++ b/src/auto/injector.js
@@ -597,7 +597,10 @@ function createInjector(modulesToLoad) {
invoke: invoke,
instantiate: instantiate,
get: getService,
- annotate: annotate
+ annotate: annotate,
+ has: function(name) {
+ return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
+ }
};
}
}
diff --git a/src/ng/animation.js b/src/ng/animation.js
index 9a5a5a95..76cf943e 100644
--- a/src/ng/animation.js
+++ b/src/ng/animation.js
@@ -51,13 +51,9 @@ function $AnimationProvider($provide) {
*/
return function $animation(name) {
if (name) {
- try {
- return $injector.get(camelCase(name) + suffix);
- } catch (e) {
- //TODO(misko): this is a hack! we should have a better way to test if the injector has a given key.
- // The issue is that the animations are optional, and if not present they should be silently ignored.
- // The proper way to fix this is to add API onto the injector so that we can ask to see if a given
- // animation is supported.
+ var animationName = camelCase(name) + suffix;
+ if ($injector.has(animationName)) {
+ return $injector.get(animationName);
}
}
}
diff --git a/test/auto/injectorSpec.js b/test/auto/injectorSpec.js
index 6f84897b..8fd03be4 100644
--- a/test/auto/injectorSpec.js
+++ b/test/auto/injectorSpec.js
@@ -58,6 +58,15 @@ describe('injector', function() {
});
+ it('should allow query names', function() {
+ providers('abc', function () { return ''; });
+
+ expect(injector.has('abc')).toBe(true);
+ expect(injector.has('xyz')).toBe(false);
+ expect(injector.has('$injector')).toBe(true);
+ });
+
+
it('should provide useful message if no provider', function() {
expect(function() {
injector.get('idontexist');