2016-02-05 53 views
2

我们正在尝试为我们的Highcharts图创建一些复杂的工具提示,该图会显示一些动态数据,这些动态数据在应用中不会显示,所以我想最好的选择是为所有格式创建一个角度指令,例如,然后启用highcharts的useHTML:true属性以及自定义格式化函数。 $ compile()不会引发错误。获取Highcharts工具提示以返回一个角度指令?

但是,当此代码运行时,工具提示只是将Object.object显示为文本,而不是指令模板的内容。我错过了什么,或者这是不可能的?下面是我想知道如果这需要“附加”一些DOM元素上班的我们正在尝试什么的例子...

tooltip: { 
       useHTML: true, 
       formatter: function() {       

        return $compile("<pm-error-rate-tooltip ></<pm-error-rate-tooltip>")($scope); 


       } 
      } 

,但如果是这样,我不知道该元素是以工具提示命名的?

+0

分享小提琴伴侣? – Siddharth

+0

这是我正在尝试做的一个基本的小提琴。该指令本身的作品,但作为工具提示不http://jsfiddle.net/ue3x49tt/ –

回答

3

您正在给格式化程序一个dom元素,它需要一个html字符串。将其转换回html工作方式,但它似乎是实现您的目标的低效方式。
http://jsfiddle.net/ue3x49tt/3/

formatter: function() {     
    return $compile("<pm-error-rate-tooltip></pm-error-rate-tooltip>")($scope).html();     

} 
+0

非常感谢您的答案。你能否详细说明为什么你认为这是低效率的。实际上,我们将创建大约20个需要显示的自定义工具提示,所以我认为每个提示都有助于保持它的整洁,至少是代码明智的做法...... –

+0

@EdRoper我担心的是您正在创建dom元素(即你不需要),然后将它们转换回html字符串。 Angular不是我的东西,所以这可能是一个合理的开销。 –

+0

但如何做事件绑定?它只会返回html字符串! –

1

我有一个约麻烦,我不能给一个paremeter的指令。 http://jsfiddle.net/tux82Lvw/

return $compile("<pm-error-rate-tooltip test='test'></pm-error-rate-tooltip>" 

顺便说一句,该指令范围是确定的,唯一的麻烦是与模板编译

//datacompliance 
angular.module('myapp').directive('pmErrorRateTooltip', function() { 
    return { 
    scope:{test:'='}, 
    link:function($scope){ 
    console.log($scope) 
    }, 
    restrict: 'E', 
    template: '<b>{{test}}</b>' 
    }; 
}); 
0

我能得到这个带有参数的工作。我从他们的答案中分出user2422856 jsfiddle以显示http://jsfiddle.net/xhfgzfps/1/

我不得不编译指令,然后执行$ scope。$ digest(),最后使用.html()返回标记。我无法弄清楚如何在不手动触发摘要的情况下做到这一点。

$scope.test = "Dont work" 
var toolTip = $compile("<pm-error-rate-tooltip test='test'></pm-error-rate-tooltip>")($scope); 
$scope.$digest(); 
return toolTip.html();