diff options
| author | Misko Hevery | 2013-05-01 20:55:25 -0400 | 
|---|---|---|
| committer | Misko Hevery | 2013-05-02 15:22:16 -0400 | 
| commit | 80341cb9badd952fdc80094df4123629313b4cc4 (patch) | |
| tree | d2b6a1f4d230de39617622a378c350433c96c7f8 | |
| parent | 9956baedd73d5e8d0edd04c9eed368bd3988444b (diff) | |
| download | angular.js-80341cb9badd952fdc80094df4123629313b4cc4.tar.bz2 | |
feat(injector): add has method for querying
Closes #2556
| -rw-r--r-- | src/auto/injector.js | 5 | ||||
| -rw-r--r-- | src/ng/animation.js | 10 | ||||
| -rw-r--r-- | test/auto/injectorSpec.js | 9 | 
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'); | 
