From d2b2c25ee29149e157eba739f2bfd275dcf56411 Mon Sep 17 00:00:00 2001 From: SilverStargazer Date: Mon, 16 Mar 2015 12:38:34 +0800 Subject: [PATCH 1/2] Added route dependency injection for anonymous controllers --- src/angularAMD.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/angularAMD.js b/src/angularAMD.js index 2faa891..23b3e87 100644 --- a/src/angularAMD.js +++ b/src/angularAMD.js @@ -135,14 +135,19 @@ define(function () { delete config.controllerUrl; if (typeof config.controller === 'undefined') { // Only controllerUrl is defined. Attempt to set the controller to return value of package loaded. - config.controller = [ - '$scope', '__AAMDCtrl', '$injector', - function ($scope, __AAMDCtrl, $injector) { - if (typeof __AAMDCtrl !== 'undefined' ) { - $injector.invoke(__AAMDCtrl, this, { '$scope': $scope }); + var dependencies = ['__AAMDCtrl', '$injector', '$scope']; + angular.forEach(config.resolve, function(factory, key) { + dependencies.push(key); + }); + config.controller = dependencies.concat(function(__AAMDCtrl, $injector) { + if (typeof __AAMDCtrl !== 'undefined' ) { + var locals = {}; + for (var i = 2; i < dependencies.length; ++i) { + locals[dependencies[i]] = arguments[i]; } + $injector.invoke(__AAMDCtrl, this, locals); } - ]; + }); } } else if (typeof config.controller === 'string') { load_controller = config.controller; From 00f565d70f99d48fdf66871db81531603e981650 Mon Sep 17 00:00:00 2001 From: SilverStargazer Date: Tue, 17 Mar 2015 10:26:39 +0800 Subject: [PATCH 2/2] Update controllerFn spec to match new param order --- test/unit/controllerFn.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/controllerFn.spec.js b/test/unit/controllerFn.spec.js index ee5df39..9b12b7a 100644 --- a/test/unit/controllerFn.spec.js +++ b/test/unit/controllerFn.spec.js @@ -29,7 +29,7 @@ define(['angularAMD'], function (angularAMD) { expect(route.current.controller).toBeDefined(); // Make sure that controller has been set to custom function - expect(route.current.controller.toString()).toMatch(/^\$scope,__AAMDCtrl,\$injector,function/); + expect(route.current.controller.toString()).toMatch(/^__AAMDCtrl,\$injector,\$scope,function/); }); });