Angularjs Popover不使用ng绑定html

Angularjs Popover不使用ng绑定html,angularjs,angular-ui-bootstrap,popover,Angularjs,Angular Ui Bootstrap,Popover,我正在尝试动态加载我的代码所在的标签上的弹出窗口 $scope.setStatusMessage = function (message) { var lblClass = "", status = "" , template; lblClass = "label label-danger"; status = "failed"; template = '<label popover="' + message + '" popover-tri

我正在尝试动态加载我的代码所在的标签上的弹出窗口

$scope.setStatusMessage = function (message) {
    var lblClass = "", status = "" , template;
        lblClass = "label label-danger";
        status = "failed";
    template = '<label popover="' + message + '" popover-trigger="mouseenter" class="' + lblClass + '">' + status + '</label>';
    return $sce.trustAsHtml(template);
}
我的html是

<span data-ng-bind-html="setStatusMessage(statusMessage)"></span>
问题是html代码正在工作,但popover不工作。我可以知道fix的问题吗

谢谢

更新 好的,伙计们,这里是

这里是一些解决方法:

事实上,正如我在评论中所说的,这是相似的。所以,在将HTML插入标记后,您需要再次编译HTML

所以我有create指令compileHtml,您应该传递函数,该函数在代码中返回经过净化的HTML消息fn,并在代码中为该函数消息提供参数。指令监视消息的更改更新HTML并重新运行编译

更新

这是你的叉子


在我看来,最好创建一个指令,它将$watch over消息,在没有任何外部函数的情况下对其进行清理,然后重新编译。

浏览器控制台中有错误吗?没有。在我的浏览器控制台上。你能创建一些小提琴来更好地理解类似的问题吗鲁本·纳戈加-不,伙计,它不是。我们不能在控制器上编译HTML。你可以在控制器上编译,但在控制器中$watch并使用HTML元素不是一个好的做法。好的,这是可以接受的,只需要很少的更改消息属性实际上不需要。没有它,我们可以拥有它。这是最新的。
directive('compileHtml', function($compile) {
        return {
          restrict: 'A',
          scope: {
            messageFn: '&',
            message: '='
          },
          link: function(scope, iElement, iAttrs) {
            scope.$watch('message', function(message) {
              var html = scope.messageFn({'message': message});
              iElement.html(html);
              $compile(iElement.contents())(scope);
            });
          }
        }
      });