2015-11-28 18 views
8

İçinde angularjs şablonlu bir araç ipucu uygulamaya çalışıyorum. Bunun için "uib-tooltip-html" kullanıyorum ve şablonu derlemek için bir özellik ekliyorum. Ama işe yaramıyor. İşte İşte kod olduğunu http://plnkr.co/edit/y1TvogsFFBoBVra3gO3F?p=preview"uib-tooltip-html" ile angularjs içinde araç ipucu

<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> 

Cevabınız için şimdiden teşekkürler plunker

+0

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

cevap

8

Böyle uib-tooltip-template kullanabilirsiniz geçerli: put sonra

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

Ve myTooltipTemplate.html sayfanızdaki html:

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

Şablon ayrı bir dosyada gider.

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

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

+0

nasıl olacağını dinamik içeriğe sahip bu iş? Bunun çok basit olduğunu, ancak böyle bir şeyi nasıl yapabileceğimi göremiyorum:

Actual TY
'dönecek" Ay: 24
YTD: 45 "? – Grandizer

+0

@Grandizer, şablon, işlenecek html'nin bir "içerme" si olarak çalışır, dolayısıyla divunuzun bağlamında çalışır. Örneğin:

ACTUAL TY
ve yine de işlevini workingdays.html:
{{ GetWorkingDays('YTD TY') }}
bubbassauro

+0

olarak çağırabilirim. Bu benim sorunum, "YTD TY" 'değişiyor. Peki, hangi değişken "ifade" veya $ olayı veya içinden geçebileceğim bir şey? – Grandizer