Regex substituir por tags html na diretiva
Estou usando o JS angular para obter eng-repeat
sobre tweets do Twitter. Eu precisava destacar partes da sequência do tweet, como@tag
e#hash
, então foi sugerido que eu usereplace
para adicionar wrappers DOM em torno das coisas que quero destacar.
O problema é que, como não estou enviando diretamente para o DOM, em vez dissong-repeating
sobre uma variável de escopo, as tags html não parecem ser adicionadas às strings.
Pergunta, questão: Como posso anexar tags html a uma string JS?
Fragmento de diretiva:
scope.getTweets = function () {
ModulesService.getTweets().success(function (res) {
if (res && Array.isArray(res)) {
scope.tweets = parseTweets(res);
}
});
};
scope.getTweets();
var parseTweets = function (tweets) {
tweets.forEach(function (tweet) {
tweet.text.replace(/(@[^ ]+)/g, '<a class="user">$1</a>').
replace(/(#[^ ]+)/g, '<span class="hash">$1</span>').
replace(/(https?:\/\/[^ ]+)/g, '<a href="$1">$1</a>');
console.log('tweet!', tweet.text); //does not contain altered HTML
});
return tweets;
};
HTML:
<div ng-repeat="tweet in tweets" class="post-body clearfix">
{{tweet.text}}
</div>