Angular фильтр return html

Я хочу использовать unsafe-html в angularjs 1.2. В то время как фильтр без html работает, с html это не так. Что я делаю:

Я добавил angular -sanitize в мой html-заголовок:

<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/angular-sanitize.js"></script>

Мой angular модуль:

var myApp = angular.module('myApp', ['ngSanitize'])
    .filter('convertState', function ($sce) {
        return function (state) {
            if (state == 1) {
                return $sce.trustAsHtml("<strong>" + state + "</strong> special state");
            }
            else {
                return $sce.trustAsHtml("<strong>"+state + "</strong> normal state");
            }
        }
    });

Мой Html:

<td><span ng-bind-html="f.state | convertstate"></span></td>

изменить: обновлено ng-bind-html-unsafe до ng-bind-html

Ответы

Ответ 1

ng-bind-html-unsafe удален в Angular 1.2. Поскольку вы правильно дезинфицируете свой ввод, вы должны просто использовать ng-bind-html.

Пример: http://plnkr.co/edit/0bHeXrarRP7IAciqAYgM?p=preview

Ответ 2

Вы можете использовать что-то вроде

app.directive('toHtml', function() {
  return {
    restrict: 'A',
    link: function (scope, el, attrs) {
      el.html(scope.$eval(attrs.toHtml));
    }
  };
});

Использовать как:

<p to-html="name | convertState"></p>

http://plnkr.co/edit/Av2rmeXp7phkDdbYUbxF