0

我的工具提示有问题。我有这样的东西

<span uib-tooltip="{{displayName()}}"></span>

并在 js 文件中

function displayName() {
return '<div>' + 
     name +
    'div' +
    '<b>something</b>'
}

所以我有转义字符,我不知道如何处理它。显然,我想在我的工具提示中正确显示代码,而不是“div”等。

我该如何处理?我知道早些时候我们可以使用 tooltip-html-unsafe,但现在已弃用。

4

3 回答 3

0

使用$sce 服务将 HTML 解析为安全的,并按照ui-bootstrap 文档uib-tooltip-html中的指定使用。

在 HTML 中:

<span uib-tooltip-html="displayName()"></span>

在控制器中:

app.controller("AppCtrl", function ($scope, $sce) {
    $scope.displayName = function () {
        return $sce.parseAsHtml('<div>' + name + '</div><b>something</b>');
    }
});
于 2018-06-07T15:09:10.657 回答
0

我不确定这是否是你想要的,但是

你可以有一个带有模板的工具提示,它将为你解析/编译你的 HTML。您将需要使用uib-tooltip-template. 这是一个演示:

var app = angular.module('myApp', ["ui.bootstrap"]);
app.controller('myCtrl', function($scope) {
  $scope.name = "'Any name'";
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.5.0/ui-bootstrap-tpls.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<body>
  <div ng-app="myApp" ng-controller="myCtrl">

    <span uib-tooltip-template="'tooltipTemplate.html'" tooltip-placement="bottom">Tooltip with a template</span>

    <!-- separate file -->
    <script type="text/ng-template" id="tooltipTemplate.html">
      <div>
        {{name}}
      </div>
      <b>something else</b>
    </script>

  </div>
</body>
</html>

于 2018-06-07T15:22:35.043 回答
0

只需安装 ngSanitize 并将其包含在您的应用程序中,您就可以使用 uib-tooltip-html(而不是 uib-tooltip)而不必担心安全性。

https://docs.angularjs.org/api/ngSanitize

安装后,您可以将其包含在您的应用程序中:

var app = angular.module('myApp', [...,'ngSanitize']);

当然,请确保在构建文件中包含插件。就个人而言,这使我能够在从以前的版本升级期间非常轻松地替换许多旧的不安全工具提示。

于 2019-04-30T17:30:05.250 回答