i'm building a App with Ionic that uses AngularJS. So, with the API on link http://lucassmuller.com/work/projetoblog/api.php?action=posts I want to show the content ('conteudo') of the post in a page of my App but show that like this example:
<p><strong>Voc&ecirc; tem&nbsp;um site e deseja um certificado SSL gratuitamente?<\/strong><\/p>\r\n\r\n<p>Se a resposta &eacute; sim, eu tenho uma ferramenta que lhe oferece um certificado SSL gratuitamente usando o Let&rsquo;s Encrypt, que &eacute; uma nova&nbsp;&ldquo;Autoridade de Certifica&ccedil;&atilde;o&rdquo; que &eacute; gr&aacute;tis, automatizada e aberta para todos.<\/p>\r\n\r\n<p>O nome dessa ferramenta &eacute; &ldquo;<strong>SSL For Free<\/strong>&rdquo; ou, em portugu&ecirc;s, SSL gratuito. Este novo servi&ccedil;o &eacute; 100% gr&aacute;tis, e confiado e aceito pela maioria dos navegadores.<\/p>\r\n\r\n<p>Para come&ccedil;ar, basta acessar o site da ferramenta <a href="https:\/\/www.sslforfree.com" target="_blank">clicando aqui<\/a>&nbsp;e ap&oacute;s o acesso, digitar o dom&iacute;nio do seu site no campo que diz...
And the output:
Você tem um site e deseja um certificado SSL gratuitamente? Se a resposta é sim, eu tenho uma ferramenta que lhe oferece um certificado SSL gratuitamente usando o Let’s Encrypt, que é uma nova “Autoridade de Certificação” que é grátis, automatizada e aberta para todos. O nome dessa ferramenta é “SSL For Free” ou, em português, SSL gratuito. Este novo serviço é 100%...
Update: my actual code after changes
controllers.js:
angular.module('starter.controllers', [])
.controller('PostCtrl', function($scope, $filter, API, $http, $stateParams, $sce) {
var postId = $stateParams.postId;
function replace_chars(input) {
return input.replace(/>/g, '>').replace(/</g, '<').replace(/"/g, '"').replace(/'/g, "'").replace(/&/g, '&');
}
function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes[0].nodeValue;
}
API.posts_all().then(function(response){
var posts=response.data;
for (var i = 0; i < posts.length; i++) {
if (posts[i].id == parseInt(postId)) {
$scope.post = posts[i];
$scope.post.conteudof = replace_chars(posts[i].conteudo);
}
}
console.log('post get ok');
});
$scope.doRefresh = function() {
API.posts_all().then(function(response){
var posts=response.data;
for (var i = 0; i < posts.length; i++) {
if (posts[i].id == parseInt(postId)) {
$scope.post = posts[i];
$scope.post.conteudof = replace_chars(posts[i].conteudo);
}
}
console.log('post get ok');
})
.finally(function() {
// Stop the ion-refresher from spinning
$scope.$broadcast('scroll.refreshComplete');
});
};
})
tab-post.html:
<ion-view view-title="{{post.titulo}}">
<ion-content>
<ion-refresher
pulling-text="Puxe para atualizar..."
on-refresh="doRefresh()">
</ion-refresher>
<div class="list card">
<div class="item item-avatar">
<img src="{{post.gravatarautor}}">
<h2>{{post.nomeautor}}</h2>
<p>Postado em {{post.data * 1000 | date:'dd/MM/yyyy'}}</p>
</div>
<div class="item item-body">
<div ng-bind-html="post.conteudof"></div>
<!--<p>
<a href="#" class="subdued">1 Like</a>
<a href="#" class="subdued">5 Comments</a>
</p>-->
</div>
</div>
</ion-content>
</ion-view>
Problem: it's showing HTML as a raw/plain text.
Here's is a snippet working: