From b1e98b1f79cde237321a130d5d57f8f9d49467ad Mon Sep 17 00:00:00 2001 From: Wesley Cho Date: Sun, 30 Aug 2015 15:29:55 -0700 Subject: [PATCH] fix(modal): fix allowing promises to be resolved - Wrap values otherwise and push to resolve handler Closes #4310 Fixes #4309 --- src/modal/modal.js | 2 ++ src/modal/test/modal.spec.js | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/modal/modal.js b/src/modal/modal.js index ca9a939455..84fc6bec86 100644 --- a/src/modal/modal.js +++ b/src/modal/modal.js @@ -606,6 +606,8 @@ angular.module('ui.bootstrap.modal', []) promisesArr.push($q.when($injector.invoke(value))); } else if (angular.isString(value)) { promisesArr.push($q.when($injector.get(value))); + } else { + promisesArr.push($q.when(value)); } }); return promisesArr; diff --git a/src/modal/test/modal.spec.js b/src/modal/test/modal.spec.js index db0d40158b..647fc748ab 100644 --- a/src/modal/test/modal.spec.js +++ b/src/modal/test/modal.spec.js @@ -615,6 +615,19 @@ describe('$modal', function () { expect($document).toHaveModalOpenWithContent('Content from resolve', 'div'); }); + it('should resolve promises as promises', function() { + open({ + controller: function($scope, $foo) { + $scope.value = 'Content from resolve'; + expect($foo).toBe('bar'); + }, + resolve: { + $foo: $q.when('bar') + }, + template: '
{{value}}
' + }); + }); + it('should delay showing modal if one of the resolves is a promise', function() { open(modalDefinition('
{{value}}
', { value: function() {