コントローラー内でHTMLエスケープされている?

220 views
Skip to first unread message

Takoogle

unread,
Jul 27, 2015, 2:09:39 AM7/27/15
to AngularJS Japan User Group
AngularJS初心者です。

html内のusernameをコントローラー内で$scopeを利用し値を取得した時点にHTMLエスケープされるのでしょうか?

js
angular.module('myApp', [])
.controller('MyController', ['$scope', function($scope) {
  $scope.username = 'World';

  $scope.sayHello = function() {
    $scope.greeting = 'Hello ' + $scope.username + '!'; // ← この時点で!!
  };
}]);

html
<div ng-controller="MyController">
  Your name:
    <input type="text" ng-model="username">
    <button ng-click='sayHello()'>greet</button>
  <hr>
  {{greeting}}
</div>


Shunpei Ootani

unread,
Jul 27, 2015, 5:01:16 AM7/27/15
to AngularJS Japan User Group, takumi...@gmail.com
こんにちは。大谷(@tanipee323)です。
scopeに入る時点・入っている時点ではEscapeされないと思います。

HTMLEscapeされているのは{{greeting}}での表示時ってことであれば、
ng-bindはセキュリティ上Escapeされるので, ng-bind-htmlディレクティブを使う必要があります。
その上で、$sceでEscapeをしないようにすれば表示上HTMLはEscapeされずに表示されます。

ngSanitizeModuleをDIしているときは$sce不要ですが、
別の使用方法が必要になります。


2015年7月27日月曜日 15時09分39秒 UTC+9 Takoogle:

Takoogle

unread,
Jul 28, 2015, 11:08:29 PM7/28/15
to AngularJS Japan User Group, s.da...@tanipee.com
大谷(@tanipee323)さま

返信いただきありがとうございます。

助かりました。

2015年7月27日月曜日 18時01分16秒 UTC+9 Shunpei Ootani:
Reply all
Reply to author
Forward
0 new messages