diff --git a/src/core/services/interimElement/interimElement.js b/src/core/services/interimElement/interimElement.js index 826bab3d4df..dba5f582348 100644 --- a/src/core/services/interimElement/interimElement.js +++ b/src/core/services/interimElement/interimElement.js @@ -53,7 +53,7 @@ function InterimElementProvider() { * all interim elements will come with the 'build' preset */ provider.addPreset('build', { - methods: ['controller', 'controllerAs', 'resolve', + methods: ['controller', 'controllerAs', 'resolve', 'multiple', 'template', 'templateUrl', 'themable', 'transformTemplate', 'parent', 'contentElement'] }); diff --git a/src/core/services/interimElement/interimElement.spec.js b/src/core/services/interimElement/interimElement.spec.js index 09f118adc0d..ec3d169a729 100644 --- a/src/core/services/interimElement/interimElement.spec.js +++ b/src/core/services/interimElement/interimElement.spec.js @@ -250,6 +250,53 @@ describe('$$interimElement service', function() { }); }); + it('should support multiple interims as a preset method', function() { + + var showCount = 0; + + createInterimProvider('interimTest'); + + inject(function(interimTest) { + + showInterim(interimTest); + expect(showCount).toBe(1); + + showInterim(interimTest); + expect(showCount).toBe(2); + + interimTest.hide(); + flush(); + + expect(showCount).toBe(1); + + interimTest.hide(); + flush(); + + expect(showCount).toBe(0); + + }); + + function showInterim(service) { + + var preset = service + .build() + .template('
Interim Element
') + .multiple(true); + + preset._options.onShow = function() { + showCount++; + }; + + preset._options.onRemove = function() { + showCount--; + }; + + service.show(preset); + flush(); + } + + }); + }); describe('a service', function() {