AngularJS $ sce只有html安全a [href]

时间:2014-12-09 13:15:50

标签: angularjs angularjs-directive ngsanitize

我有一个评论文本框,我只想让[href]作为带有ngSanitize / $ sce的安全html。 所以我正在尝试这个:

<span contact-highlight hightlight-value="showedText" ng-bind-html="showedText"></span>

在我的contactHiglight指令中,我有这个:

contentObjectApp.directive('contactHighlight', function ($sce) {
    return {
        restrict: 'A',
        scope: { hightlightValue: '=' },
        link: function ($scope, $element, $attrs) {
            $scope.hightlightValue = "<h2> testing" + $sce.trustAsHtml('<a href="#">render me please</a>') + " </h2>";
        }
     };
});

我希望只允许'渲染我'成为一个href链接,但我总是希望能够渲染。我错过了什么?有一个简单的方法吗?

1 个答案:

答案 0 :(得分:2)

根据Angular 1.3.7(https://docs.angularjs.org/api/ng/service/ $ sce)的文档,如果你想传递链接,请使用$ sce.trustAs($ sce.URL,value_to_parse)。

我建议你使用过滤器:

angular.module('App', [])
.filter('asHtml', function($sce) {
  return function(input) {
    return $sce.trustAs($sce.URL, input);
  };
})

然后在您的视图中,您可以将其用作:

<span ng-bind-html="value_to_parse | asHtml"> </span>