Использование HTML-объектов в строках Angular
Учитывая строку в моей модели $scope, которая содержит объект HTML, как я могу гарантировать, что объект правильно отображается как символ HTML, а не буквальная строка?
Объект HTML - Глоссарий MDN
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 = "© Acme";
});
angular.bootstrap(document, ['app']);
});
</script>
</body>
</html>
Ответы
Ответ 1
С $sce. Вам нужно явно указать angular содержимое 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("© Acme");
});
angular.bootstrap(document, ['app']);
});
</script>
http://plnkr.co/edit/9iNnRC7AxFptnQZLPtYR?p=preview
Ответ 2
Вам не нужно $sce
связывать строки с html. Все, что вам нужно, это вставить ngSanitize
в ваше приложение (это не основной модуль), а затем использовать директиву атрибута ng-bind-html
.
JavaScript
var app = angular.module('app', ['ngSanitize']);
app.controller('MainCtrl', function($scope) {
$scope.title = '½ Cookies & <span class="cream">Cream</span>';
});
Html
<div ng-bind-html="title"></div>