diff --git a/angularFiles.js b/angularFiles.js index 702d5efd6290..d64016742e67 100755 --- a/angularFiles.js +++ b/angularFiles.js @@ -73,6 +73,7 @@ var angularFiles = { 'src/ng/directive/ngStyle.js', 'src/ng/directive/ngSwitch.js', 'src/ng/directive/ngTransclude.js', + 'src/ng/directive/ngTranscludeSelect.js', 'src/ng/directive/script.js', 'src/ng/directive/select.js', 'src/ng/directive/style.js', diff --git a/src/AngularPublic.js b/src/AngularPublic.js index 3f530626d3e2..e0721a209b68 100644 --- a/src/AngularPublic.js +++ b/src/AngularPublic.js @@ -39,6 +39,7 @@ ngSwitchDefaultDirective, ngOptionsDirective, ngTranscludeDirective, + ngTranscludeSelectDirective, ngModelDirective, ngListDirective, ngChangeDirective, @@ -197,6 +198,7 @@ function publishExternalAPI(angular) { ngSwitchDefault: ngSwitchDefaultDirective, ngOptions: ngOptionsDirective, ngTransclude: ngTranscludeDirective, + ngTranscludeSelect: ngTranscludeSelectDirective, ngModel: ngModelDirective, ngList: ngListDirective, ngChange: ngChangeDirective, diff --git a/src/ng/directive/ngTranscludeSelect.js b/src/ng/directive/ngTranscludeSelect.js new file mode 100644 index 000000000000..89dfe3ebcc21 --- /dev/null +++ b/src/ng/directive/ngTranscludeSelect.js @@ -0,0 +1,49 @@ +'use strict'; + +/** + * @ngdoc directive + * @name ngTranscludeSelect + * @restrict EAC + * + * @description + * + * @element ANY + * + */ +var ngTranscludeSelectDirective = ngDirective({ + restrict: 'EAC', + link: function($scope, $element, $attrs, controller, $transclude) { + checkTranscludeOption(); + $transclude(transcludeSelection); + + function transcludeSelection(clone) { + var selector = $attrs.ngTranscludeSelect; + var selectedElements = getSelectedElements(clone, selector); + if (selectedElements.length) $element.append(selectedElements); + } + + function getSelectedElements(clone, selector) { + var wrapper = wrapClone(clone); + var selectedElements = wrapper[0].querySelectorAll(selector); + wrapper.remove(); + return selectedElements; + } + + function wrapClone(clone) { + var wrapper = jqLite("