mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-04-24 03:55:49 +08:00
fix($compile): don't instantiate controllers twice for element transclude directives
This is a fix for regression introduced last week by faf5b980.
Closes #4654
This commit is contained in:
@@ -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('<div><div element-trans normal-dir></div></div>')($rootScope);
|
||||
expect(log).toEqual([
|
||||
'controller:elementTrans',
|
||||
'controller:normalDir',
|
||||
'controller:normalDir',
|
||||
'controller:normalDir'
|
||||
]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user