2014-02-20 2 views
15

Учитывая строку в моей модели $ scope, которая содержит объект HTML, как я могу гарантировать, что объект будет правильно отображаться как символ HTML, а не буквальная строка?Использование HTML-объектов в пределах угловых строк

HTML entity - MDN Glossary

http://plnkr.co/edit/0BliljcDkj0vvj3jdEqz?p=preview

<!DOCTYPE html> 
<html> 

    <head> 
    <script data-require="[email protected]*" 
      data-semver="1.2.13" 
      src="http://code.angularjs.org/1.2.13/angular.js"></script> 

    </head> 

    <body> 
    <div ng-controller="htmlChar">{{title}}</div> 

    <script> 

     angular.element(document).ready(function(){ 

     var app=angular.module("app",[]); 
     app.controller("htmlChar",function($scope){ 
      $scope.title = "&copy; Acme"; 
     }); 
     angular.bootstrap(document, ['app']); 

     }); 

    </script> 

    </body> 
</html> 
+0

что вы имеете в виду HTML сущности? –

+1

Символьный объект, © например. http://www.w3schools.com/html/html_entities.asp – mccainz

ответ

13

С $sce. Вам нужно явно указать угловое содержание html.

<div ng-controller="htmlChar" ng-bind-html="title"></div> 

<script> 

    angular.element(document).ready(function(){ 

    var app=angular.module("app",[]); 
    app.controller("htmlChar",function($scope, $sce){ 
     $scope.title = $sce.trustAsHtml("&copy; Acme"); 
    }); 
    angular.bootstrap(document, ['app']); 

    }); 

</script> 

http://plnkr.co/edit/9iNnRC7AxFptnQZLPtYR?p=preview

+9

и он должен использовать ng-bind-html – michael

+0

Да, Майкл прав. Я был просто ленив и привязан только к plnkr, извините :( – romainberger

+0

и для ng-bind-html для работы вам нужна угловая дезинфекция –

13

Вы сделать не необходимости $sce связывать строки с HTML. Все, что вам нужно, это ввести ngSanitize в ваше приложение (это не основной модуль), а затем использовать директиву атрибута ng-bind-html.

JavaScript

var app = angular.module('app', ['ngSanitize']); 

app.controller('MainCtrl', function($scope) { 
    $scope.title = '&#189; Cookies &amp; <span class="cream">Cream</span>'; 
}); 

Html

<div ng-bind-html="title"></div> 

Plunkr

Смежные вопросы