diff options
| -rw-r--r-- | docs/content/guide/dev_guide.services.injecting_controllers.ngdoc | 4 | ||||
| -rw-r--r-- | docs/content/guide/dev_guide.templates.filters.creating_filters.ngdoc | 40 | ||||
| -rw-r--r-- | docs/src/templates/doc_widgets.js | 19 | ||||
| -rw-r--r-- | src/Injector.js | 19 | ||||
| -rw-r--r-- | src/directives.js | 9 | ||||
| -rw-r--r-- | src/service/compiler.js | 12 | ||||
| -rw-r--r-- | test/directivesSpec.js | 13 | 
7 files changed, 46 insertions, 70 deletions
| diff --git a/docs/content/guide/dev_guide.services.injecting_controllers.ngdoc b/docs/content/guide/dev_guide.services.injecting_controllers.ngdoc index 4b031860..c01b04b1 100644 --- a/docs/content/guide/dev_guide.services.injecting_controllers.ngdoc +++ b/docs/content/guide/dev_guide.services.injecting_controllers.ngdoc @@ -28,7 +28,7 @@ this.secondMethod = function() {  myController.$inject = ['$location', '$log'];  </pre> -<doc:example> +<doc:example module="MyServiceModule">  <doc:source>  <script type="text/javascript">  angular.module.MyServiceModule = ['$provide', function($provide){ @@ -53,7 +53,7 @@ function myController(notifyService) {  myController.$inject = ['notify'];  </script> -<div ng:controller="myController" ng:module="MyServiceModule"> +<div ng:controller="myController">  <p>Let's try this simple notify service, injected into the controller...</p>  <input ng:init="message='test'" type="text" ng:model="message" />  <button ng:click="callNotify(message);">NOTIFY</button> diff --git a/docs/content/guide/dev_guide.templates.filters.creating_filters.ngdoc b/docs/content/guide/dev_guide.templates.filters.creating_filters.ngdoc index 92c749f7..a8fd2ce7 100644 --- a/docs/content/guide/dev_guide.templates.filters.creating_filters.ngdoc +++ b/docs/content/guide/dev_guide.templates.filters.creating_filters.ngdoc @@ -16,31 +16,31 @@ filter to manipulate the DOM.  The following sample filter reverses a text string. In addition, it conditionally makes the  text upper-case and assigns color. -<doc:example> +<doc:example module="MyReverseModule">  <doc:source>  <script type="text/javascript"> -angular.module.MyReverseModule = function MyModule($filterProvider) { - $filterProvider.register('reverse', function() { -   return function(input, uppercase) { -     var out = ""; -     for (var i = 0; i < input.length; i++) { -       out = input.charAt(i) + out; -     } -     // conditional based on optional argument -     if (uppercase) { -       out = out.toUpperCase(); -     } -     return out; -   } - }); -} +  angular.module.MyReverseModule = function ($filterProvider) { +    $filterProvider.register('reverse', function() { +      return function(input, uppercase) { +        var out = ""; +        for (var i = 0; i < input.length; i++) { +          out = input.charAt(i) + out; +        } +        // conditional based on optional argument +        if (uppercase) { +          out = out.toUpperCase(); +        } +        return out; +      } +    }); +  } - function Ctrl() { -   this.greeting = 'hello'; - } +  function Ctrl() { +    this.greeting = 'hello'; +  }  </script> -<div ng:controller="Ctrl" ng:module="MyReverseModule"> +<div ng:controller="Ctrl">    <input ng:model="greeting" type="greeting"><br>    No filter: {{greeting}}<br>    Reverse: {{greeting|reverse}}<br> diff --git a/docs/src/templates/doc_widgets.js b/docs/src/templates/doc_widgets.js index 56ef5bcf..eb8f36f6 100644 --- a/docs/src/templates/doc_widgets.js +++ b/docs/src/templates/doc_widgets.js @@ -15,14 +15,15 @@    var HTML_TEMPLATE =    '<!doctype html>\n' +    '<html xmlns:ng="http://angularjs.org">\n' + -  ' <script src="' + angularJsUrl + '" ng:autobind></script>\n' + +  ' <script src="' + angularJsUrl + '" ng:autobind_MODULE_></script>\n' +    ' <body>\n' +    '_HTML_SOURCE_\n' +    ' </body>\n' +    '</html>'; -  angular.widget('doc:example', function(element){ +  angular.widget('doc:example', ['$injector', '$element', function($injector, element){      this.descend(true); //compile the example code +    var module = element.attr('module');      //jQuery find() methods in this widget contain primitive selectors on purpose so that we can use      //jqlite instead. jqlite's find() method currently supports onlt getElementsByTagName! @@ -59,7 +60,10 @@        '</ul>';      var tabs = angular.element(tabHtml); -    tabs.find('li').eq(1).find('pre').text(HTML_TEMPLATE.replace('_HTML_SOURCE_', code.html)); +    tabs.find('li').eq(1).find('pre').text( +      HTML_TEMPLATE. +        replace('_HTML_SOURCE_', code.html). +        replace('_MODULE_', (module ? (' ng:module="' + module + '"') : '')));      element.html('');      element.append(tabs); @@ -76,6 +80,11 @@        alert(e);      } +    if (module) { +      $injector.invoke(null, angular.module[module]); +    } + +      function jsFiddleButton(jsfiddle) {        if (jsfiddle !== 'false') {          if(jsfiddle === true) { @@ -100,7 +109,7 @@                      '</textarea>' +                      '<input type="text" name="title" value="AngularJS Live Example">' +                      '<textarea name="html">' + -                      '<script src="' + angularJsUrl + '" ng:autobind></script>\n\n' + +                      '<script src="' + angularJsUrl + '" ng:autobind' + (module ? (' ng:module="' + module + '"') : '') + '></script>\n\n' +                        '<!-- AngularJS Example Code: -->\n\n' +                        fiddleSrc +                      '</textarea>' + @@ -116,7 +125,7 @@        }        return '';      } -  }); +  }]);    function indent(text) {      if (!text) return text; diff --git a/src/Injector.js b/src/Injector.js index 1db79eb8..8df47306 100644 --- a/src/Injector.js +++ b/src/Injector.js @@ -140,21 +140,6 @@ function inferInjectionArgs(fn) {   * @return new instance of `Type`.   */ -/** - * @ngdoc method - * @name angular.module.AUTO.$injector#loadModule - * @methodOf angular.module.AUTO.$injector - * @description - * Load additional modules into the current injector configuration - * - * @param {Array} modules An array of modules, where module is a: - * - *   - `string`: look up the module function from {@link angular.module} and then treat as `function`. - *   - `function`: execute the module configuration function using - *      {@link angular.module.AUTO.$injector#invoke $injector.invoke()} - */ - -  /**   * @ngdoc object @@ -255,15 +240,13 @@ function inferInjectionArgs(fn) {  function createInjector(modulesToLoad, moduleRegistry) {    var cache = {},        providerSuffix = 'Provider', -      providerSuffixLength = providerSuffix.length,        path = [],        $injector;    value('$injector', $injector = {      get: getService,      invoke: invoke, -    instantiate: instantiate, -    loadModule: loadModule +    instantiate: instantiate    });    value('$provide', {      service: service, diff --git a/src/directives.js b/src/directives.js index f508d40b..da540df5 100644 --- a/src/directives.js +++ b/src/directives.js @@ -887,12 +887,3 @@ angularDirective("ng:cloak", function(expression, element) {    element.removeAttr('ng:cloak');    element.removeClass('ng-cloak');  }); - -angularDirective('ng:module', ['$value', '$injector', -                       function(modules,  $injector) { -  forEach(modules.split(','), function(module){ -    if (module = trim(module)) { -      $injector.loadModule(module); -    } -  }); -}]); diff --git a/src/service/compiler.js b/src/service/compiler.js index 3464a1a0..8a0dca7d 100644 --- a/src/service/compiler.js +++ b/src/service/compiler.js @@ -244,6 +244,7 @@ function $CompileProvider(){                elementName = nodeName_(element),                elementNamespace = elementName.indexOf(':') > 0 ? lowercase(elementName).replace(':', '-') : '',                template, +              locals = {$element: element},                selfApi = {                  compile: bind(self, self.compile),                  descend: function(value){ if(isDefined(value)) descend = value; return descend;}, @@ -256,7 +257,10 @@ function $CompileProvider(){              if (!widget) {                if ((widget = self.widgets('@' + name))) {                  element.addClass('ng-attr-widget'); -                widget = bind(selfApi, widget, value, element); +                if (isFunction(widget) && !widget.$inject) { +                  widget.$inject = ['$value', '$element']; +                } +                locals.$value = value;                }              }            }); @@ -264,14 +268,16 @@ function $CompileProvider(){              if ((widget = self.widgets(elementName))) {                if (elementNamespace)                  element.addClass('ng-widget'); -              widget = bind(selfApi, widget, element); +              if (isFunction(widget) && !widget.$inject) { +                widget.$inject = ['$element']; +              }              }            }            if (widget) {              descend = false;              directives = false;              var parent = element.parent(); -            template.addLinkFn(widget.call(selfApi, element)); +            template.addLinkFn($injector.invoke(selfApi, widget, locals));              if (parent && parent[0]) {                element = jqLite(parent[0].childNodes[elementIndex]);              } diff --git a/test/directivesSpec.js b/test/directivesSpec.js index 3ca60ae4..5f9fa0a8 100644 --- a/test/directivesSpec.js +++ b/test/directivesSpec.js @@ -535,17 +535,4 @@ describe("directive", function() {        expect(element.hasClass('bar')).toBe(true);      }));    }); - -  describe('ng:module', function() { -    it('should install the modules', inject(function($injector, $compile, $rootScope) { -      var log = ''; -      var injector = $injector; -      angular.module.a = function($injector){ log += ($injector == injector) + ';';}; -      angular.module.b = function($injector){ log += ($injector == injector); } -      $compile('<div ng:module="   a, ,,, b "></div>')($rootScope); -      expect(log).toEqual('true;true'); -      delete angular.module.a; -      delete angular.module.b; -    })); -  });  }); | 
