I have JSON variables that contain HTML.
By doing: {{source.HTML}}
Angular is showing <
and >
instead of <
and >
.
What can I do to have Angular render the actual HTML?
UPDATE:
This is my controller:
app.controller('objectCtrl', ['$scope', '$http', '$routeParams',
function($scope, $http, $routeParams) {
var productId = ($routeParams.productId || "");
$http.get(templateSource+'/object?i='+productId)
.then(function(result) {
$scope.elsevierObject = {};
angular.extend($scope,result.data[0]);
});
}]);
Inside my HTML i can then use:
<div>{{foo.bar.theHTML}}</div>
Best Answer
Do you want to show the HTML (like
<b>Hello</b>
) or render the HTML (like Hello) ?If you want to show it, the curly bracket is enough. However if the html you have has html entities (like
<stuff
) you need to manually unescape it, see this SO question.If you want to render it, you need to use the
ng-bind-html
directive instead of curcly bracket (which, FYI, is a shortcut to theng-bind
directive). You need to tell Angular that the content injected into that directive is safe, using$sce.trustAsHtml
.See example of both cases below: