From 8adae2fdf272f3fa428cc9fe43c860c02b2d85fd Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Mon, 14 Nov 2011 15:58:40 -0800 Subject: refactor(injector): removed loadModule/ng:module - added module property to doc:example --- .../dev_guide.services.injecting_controllers.ngdoc | 4 +-- ..._guide.templates.filters.creating_filters.ngdoc | 40 +++++++++++----------- docs/src/templates/doc_widgets.js | 19 +++++++--- src/Injector.js | 19 +--------- src/directives.js | 9 ----- src/service/compiler.js | 12 +++++-- 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']; - + -
+

Let's try this simple notify service, injected into the controller...

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. - + -
+

No filter: {{greeting}}
Reverse: {{greeting|reverse}}
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 = '\n' + '\n' + - ' \n' + + ' \n' + ' \n' + '_HTML_SOURCE_\n' + ' \n' + ''; - 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 @@ ''; 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 @@ '' + '' + '' + @@ -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('
')($rootScope); - expect(log).toEqual('true;true'); - delete angular.module.a; - delete angular.module.b; - })); - }); }); -- cgit v1.2.3