web-dev-qa-db-ja.com

HTML文字列をHTMLとして印刷する方法

たとえば、私がする場合:

var = "<a>Asd</a>";

<span>{{ var }}</span>

文字列はhtmlではなくテキストのように印刷されます。htmlを印刷するにはどうすればよいですか?

27
itsme

ng-bind-htmlディレクティブ

式を安全な方法で現在の要素に評価した結果をinnerHTMLするバインディングを作成します。

<ANY ng-bind-html="{expression}">
   ...
</ANY>
41
Florian F.

ng-bind-htmlディレクティブを使用する前に、$ sanitizeサービスを含める必要があります。そうしないと、エラーがスローされます。

エラー:$ sce:unsafe安全/信頼できる値が必要です安全なコンテキストで安全でない値を使用しようとしています。

Error: [$sce:unsafe] http://errors.angularjs.org/1.4.5/$sce/unsafe
    at Error (native)

正しい方法:

<script src="angular.js"></script>
<script src="angular-sanitize.js"></script>
var myApp = angular.module('app', ['ngSanitize']);
myApp.controller('MyController', ['$scope', function($scope) {
  $scope.myHTML = '<a href="#">Hello, World!</a>';
}]);
<div ng-controller="MyController">
 <p ng-bind-html="myHTML"></p>
</div>

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

https://docs.angularjs.org/api/ng/directive/ngBindHtml

9

次のようなこともできます:

 
 app.filter( 'to_trusted'、['$ sce'、function($ sce){
 return function(text){
 return $ sce。 trustAsHtml(text); 
}; 
); 
 

そして、ビューで:

 
 ng-bind-html = "myHTML | to_trusted" 
 
5
Adam Kosmala