$ sce.trustAsHtml返回的值不是由$ compile编译的

时间:2015-12-26 21:53:51

标签: angularjs angularjs-directive angular-ui-bootstrap angular-directive angularjs-compile

我尝试使用angular bootstrap-ui popover使用html创建自定义弹出框,其中包含完整日历活动,如下所述:Getting Angular UI Calendar to work with UI-Bootstrap Tooltips

但是我需要使用更复杂的popover,需要使用uib-popover-html,如下所示:

 $scope.eventRender = function( event, element, view ) { 

        var test = $sce.trustAsHtml('<b> Hello World! </b>');
        element.attr({'uib-popover-html':  test,
                     'popover-trigger' : 'mouseenter',
                     'popover-append-to-body': true});

        $compile(element)($scope);
    };

但是当它抛出以下错误时:

  

错误:[$ parse:syntax]语法错误:令牌&#39;&lt;&#39;不是主要的   表达式[ Hello World!]第1列的表达式! ]   从[ Hello World开始! ]。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

根据这个issue,我的假设是uib-popover-html甚至不打算工作。

但是有解决方法:只需使用uib-popover-template

$scope.eventRender = function(event, element, view) {
  element.attr({
    'uib-popover-template': "'myTooltipTemplate'",
    'popover-trigger': 'mouseenter',
    'popover-append-to-body': true
  });
  $compile(element)($scope);
};

这是一个小提琴:http://jsfiddle.net/masa671/4wf31bkw/