From 18ae985c3a3147b589c22f6ec21bacad2f578e2b Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Fri, 25 Oct 2013 19:10:50 -0700 Subject: fix($compile): don't instantiate controllers twice for element transclude directives This is a fix for regression introduced last week by faf5b980. Closes #4654 --- test/ng/compileSpec.js | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'test/ng/compileSpec.js') diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 0e394640..c6cba3a4 100755 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -3179,6 +3179,47 @@ describe('$compile', function() { expect(log).toEqual('compile:elementTrans; compile:regularTrans; regular'); }); }); + + + it('should instantiate high priority controllers only once, but low priority ones each time we transclude', + function() { + module(function() { + directive('elementTrans', function(log) { + return { + transclude: 'element', + priority: 50, + controller: function($transclude, $element) { + log('controller:elementTrans'); + $transclude(function(clone) { + $element.after(clone); + }); + $transclude(function(clone) { + $element.after(clone); + }); + $transclude(function(clone) { + $element.after(clone); + }); + } + }; + }); + directive('normalDir', function(log) { + return { + controller: function() { + log('controller:normalDir'); + } + }; + }); + }); + inject(function($compile, $rootScope, log) { + element = $compile('
')($rootScope); + expect(log).toEqual([ + 'controller:elementTrans', + 'controller:normalDir', + 'controller:normalDir', + 'controller:normalDir' + ]); + }); + }); }); -- cgit v1.2.3