Skip to content

Commit b380c22

Browse files
committed
feat($state): inject resolve params into controllerProvider
Fixes #1131
1 parent bf0f6de commit b380c22

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/state.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1394,7 +1394,7 @@ function $StateProvider( $urlRouterProvider, $urlMatcherFactory) {
13941394
promises.push($resolve.resolve(injectables, locals, dst.resolve, state).then(function (result) {
13951395
// References to the controller (only instantiated at link time)
13961396
if (isFunction(view.controllerProvider) || isArray(view.controllerProvider)) {
1397-
var injectLocals = angular.extend({}, injectables, locals);
1397+
var injectLocals = angular.extend({}, injectables, locals, result);
13981398
result.$$controller = $injector.invoke(view.controllerProvider, null, injectLocals);
13991399
} else {
14001400
result.$$controller = view.controller;

test/stateSpec.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,12 @@ describe('state', function () {
7070
.state('dynamicController', {
7171
url: "/dynamic/:type",
7272
template: "test",
73-
controllerProvider: function($stateParams) {
74-
ctrlName = $stateParams.type + "Controller";
73+
controllerProvider: function($stateParams, foo) {
74+
ctrlName = $stateParams.type + foo + "Controller";
7575
return ctrlName;
76+
},
77+
resolve: {
78+
foo: function() { return 'Foo'; }
7679
}
7780
})
7881
.state('home.redirect', {
@@ -484,7 +487,7 @@ describe('state', function () {
484487
it('uses the controllerProvider to get controller dynamically', inject(function ($state, $q) {
485488
$state.transitionTo('dynamicController', { type: "Acme" });
486489
$q.flush();
487-
expect(ctrlName).toEqual("AcmeController");
490+
expect(ctrlName).toEqual("AcmeFooController");
488491
}));
489492
});
490493

0 commit comments

Comments
 (0)