2015-11-28 16 views
8

Ich versuche einen Tooltip mit angularjs template zu implementieren. Dafür verwende ich "uib-tooltip-html" und füge ein Attribut für das Element hinzu, um die Vorlage zu kompilieren. Aber es funktioniert nicht. Hier ist der Code Hier ist der Plunker http://plnkr.co/edit/y1TvogsFFBoBVra3gO3F?p=previewTooltip in angularjs mit "uib-tooltip-html"

<html> 
<head lang="en"> 
    <meta charset="UTF-8"/> 
    <title>uib-tooltip-html test</title> 
    <link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular.js"></script> 
    <script src="https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.14.3.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular-sanitize.min.js"></script> 
    <script> 
     var app = angular.module("test", ['ngSanitize','ui.bootstrap']).config(function($sceProvider) { 
      $sceProvider.enabled(false); 
     }); 

     app.controller("testController", function($scope, $http, $interval, $sce) { 
      $scope.text = $sce.trustAsHtml('<table><tr ng-repeat="x in [1,2,3]"><td>{{ x }}</td></tr></table>'); 
     }); 
     app.directive('compileTemplate', function($compile, $parse){ 
    return { 
     link: function(scope, element, attr){ 
      var parsed = $parse(attr.uibTooltipHtml); 
      console.log(attr.uibTooltipHtml); 

      function getStringValue() { return (parsed(scope) || '').toString(); } 
      console.log(getStringValue()) 
      //Recompile if the template changes 
      scope.$watch(getStringValue, function() { 
       console.log('ca passe'); 
       $compile(element, null, -9999)(scope); //The -9999 makes it skip directives so that we do not recompile ourselves 
      }); 
     }   
    } 
}); 
    </script> 

    </head> 
<body> 

<div ng-app="test" ng-controller="testController"> 

    <p style="margin-top: 5em;" uib-tooltip="Some text" > 
     A Thing With a Tooltip 
    </p> 

    <p style="margin-top: 5em;" uib-tooltip-html="text" compile-template> 
     A Thing With an HTML Tooltip 
    </p> 

</div> 

Vielen Dank im Voraus für Ihre Antwort

+0

http://stackoverflow.com/a/28189625/1061668 –

Antwort

8

können Sie uib-tooltip-template wie folgt verwenden:

<p style="margin-top: 5em;" uib-tooltip-template="'myTooltipTemplate.html'"> 
    A Thing With an HTML Tooltip 
</p> 

Und dann in Put- Ihr html in myTooltipTemplate.html:

<table><tr ng-repeat="x in [1,2,3]"><td>{{ x }}</td></tr></table> 

Die Vorlage wird in einer separaten Datei gespeichert.

Dokumentation: https://angular-ui.github.io/bootstrap/#/tooltip

plnkr: http://plnkr.co/edit/tiCHpd0LipixXbO4Xfa5?p=preview

+0

Wie würde diese Arbeit mit dynamischen Inhalten? Ich liebe es, dass es einfach ist, aber ich sehe nicht, wie ich etwas so tun könnte: '

Actual TY
' wo es zurückgeht "Monat: 24
YTD: 45"? – Grandizer

+0

@Grandizer, die Vorlage funktioniert nur als ein "include" des HTML zu gerendert werden, so dass es im Kontext Ihres div funktioniert. Zum Beispiel:

ACTUAL TY
und Sie können immer noch die Funktion in workdays.html aufrufen:
{{ GetWorkingDays('YTD TY') }}
bubbassauro

+0

Ich denke, das ist mein Problem, das '" YTD TY "' ändert. Also welche Variable ist der "Ausdruck" oder das $ Ereignis oder etwas, das ich durchlassen kann? – Grandizer