2014-12-09 40 views
1

我有一個評論文本框,我只想允許[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>"; 
     } 
    }; 
}); 

我期待的方式,只允許「使我好嗎」成爲A HREF鏈接,但我總是期待被渲染。我錯過了什麼?是否有捷徑可尋?

回答

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>