AngularJSのbindとは以下のようにhtmlのエレメントの値を書き込むことをさします。
<p>{{myData.text}}</p>
同様の表現で以下の書き方も可能です。
<p ng-bind="myData.text"></p>
例えばデータを以下のようにセットします。
$scope.myData = { text:"こんにちは", html:'<span style="color:red;">こんにちは</span>' }
そして
<p>{{myData.text}}</p> <p>{{myData.html}}</p>
と設定すると、それぞれこうなります。
こんにちは <span style="color:red;">こんにちは</span>
初期のAngularJSでは ng-bind-html-unsafeというディレクティブが用意されており、HTMLをそのまま表示することができましたが、1.5.Xのバージョンでは、ng-bind-html が用意され、HTMLの除去(サニタイズ)を行う仕様となったようです。unsafeとつけるくらいなので、そもそも非推奨だったのでしょうか。ともかくHTMLはbindしない表現が望ましいようです。
<p ng-bind-html="myData.html"></p>
↓
こんにちは
すべての例は以下に実装しました。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular-sanitize.js"></script>
// myAppモジュールを作成 var app = angular.module('myApp', ['ngSanitize']); // myAppモジュールにmyControllerコントローラーを登録 app.controller('myController', function($scope) { $scope.myData = { text:"こんにちは", html:'<span style="color:red;">こんにちは</span>' } });
<div ng-app="myApp"> <div ng-controller="myController"> <p>{{myData.text}}</p> <p>{{myData.html}}</p> <p ng-bind="myData.text"></p> <p ng-bind="myData.html"></p> <p ng-bind-html="myData.html"></p> </div> </div>
{{myData.text}}
{{myData.html}}