diff --git a/src/tooltip/docs/demo.html b/src/tooltip/docs/demo.html index 7421977a6e..1840f7d114 100644 --- a/src/tooltip/docs/demo.html +++ b/src/tooltip/docs/demo.html @@ -1,19 +1,20 @@ -
-
-
Dynamic Tooltip Text:
-

- Pellentesque dynamic, - sit amet venenatis urna cursus eget nunc scelerisque viverra mauris, in - aliquam. Tincidunt lobortis feugiat vivamus at - left eget - arcu dictum varius duis at consectetur lorem. Vitae elementum curabitur - right - nunc sed velit dignissim sodales ut eu sem integer vitae. Turpis egestas - bottom - pharetra convallis posuere morbi leo urna, - fading - at elementum eu, facilisis sed odio morbi quis commodo odio. In cursus - turpis massa tincidunt dui ut. -

-
-
+
+
+
Dynamic Tooltip Text:
+
Dynamic Tooltip Popup Text:
+

+ Pellentesque {{dynamicTooltipText}}, + sit amet venenatis urna cursus eget nunc scelerisque viverra mauris, in + aliquam. Tincidunt lobortis feugiat vivamus at + left eget + arcu dictum varius duis at consectetur lorem. Vitae elementum curabitur + right + nunc sed velit dignissim sodales ut eu sem integer vitae. Turpis egestas + bottom + pharetra convallis posuere morbi leo urna, + fading + at elementum eu, facilisis sed odio morbi quis commodo odio. In cursus + turpis massa tincidunt dui ut. +

+
+
diff --git a/src/tooltip/docs/demo.js b/src/tooltip/docs/demo.js index 3913b2fd05..38b5c64e77 100644 --- a/src/tooltip/docs/demo.js +++ b/src/tooltip/docs/demo.js @@ -1,3 +1,4 @@ -var TooltipDemoCtrl = function ($scope) { - $scope.dynamicTooltip = "Hello, World!"; -}; +var TooltipDemoCtrl = function ($scope) { + $scope.dynamicTooltip = "Hello, World!"; + $scope.dynamicTooltipText = "dynamic"; +}; diff --git a/src/tooltip/test/tooltipSpec.js b/src/tooltip/test/tooltipSpec.js index da3e0d521c..f52a34d79f 100644 --- a/src/tooltip/test/tooltipSpec.js +++ b/src/tooltip/test/tooltipSpec.js @@ -60,6 +60,35 @@ describe('tooltip', function() { expect( elmScope.placement ).toBe( "bottom" ); })); + it('should work inside an ngRepeat', inject( function( $compile ) { + + elm = $compile( angular.element( + '' + ) )( scope ); + + scope.items = [ + { name: "One", tooltip: "First Tooltip" } + ]; + + scope.$digest(); + + var tt = angular.element( elm.find("li > span")[0] ); + + tt.trigger( 'mouseenter' ); + + // Due to the transclusion, the contents of the element are in a span, so + // we select the tooltip's child and ensure its content matches. + expect( tt.children().text() ).toBe( scope.items[0].name ); + + // And the tooltip text should still match. + expect( tt.scope().tooltipTitle ).toBe( scope.items[0].tooltip ); + + tt.trigger( 'mouseleave' ); + })); }); diff --git a/src/tooltip/tooltip.js b/src/tooltip/tooltip.js index 4b678e22c2..65050bfcc3 100644 --- a/src/tooltip/tooltip.js +++ b/src/tooltip/tooltip.js @@ -17,7 +17,13 @@ angular.module( 'ui.bootstrap.tooltip', [] ) ''; return { + transclude: true, scope: { tooltipTitle: '@tooltip', placement: '@tooltipPlacement', animation: '&tooltipAnimation' }, + controller: ['$transclude', '$element', function($transclude, $element) { + $transclude(function(clone) { + $element.append(clone); + }); + }], link: function ( scope, element, attr ) { var tooltip = $compile( template )( scope ), transitionTimeout;