Regex reemplazar con tags html en directiva

Estoy usando Angular JS para obtener y ng-repeat sobre Twitter tweets. Necesitaba resaltar partes de la cadena de tweet, como @tag y #hash , por lo que se sugirió que use replace para agregar envoltorios DOM alrededor de las cosas que quiero resaltar.

El problema es que, dado que no estoy enviando directamente al DOM, y en su lugar ng-repeating en una variable de ámbito, las tags html no parecen agregarse a las cadenas.

Pregunta : ¿Cómo puedo agregar tags html a una cadena JS?


Fragmento de dirección:

 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, 'https://stackoverflow.com/questions/35704715/regex-replace-with-html-tags-in-directive/$1'). replace(/(#[^ ]+)/g, 'https://stackoverflow.com/questions/35704715/regex-replace-with-html-tags-in-directive/$1'). replace(/(https?:\/\/[^ ]+)/g, 'https://stackoverflow.com/questions/35704715/regex-replace-with-html-tags-in-directive/$1'); console.log('tweet!', tweet.text); //does not contain altered HTML }); return tweets; }; 

HTML:

 
{{tweet.text}}

use un filtro como este

  filterExample.filter('filterName', function () { return function (text) { var str = text.replace(/(@[^ ]+)/g, 'https://stackoverflow.com/questions/35704715/regex-replace-with-html-tags-in-directive/$1'). replace(/(#[^ ]+)/g, 'https://stackoverflow.com/questions/35704715/regex-replace-with-html-tags-in-directive/$1'). replace(/(https?:\/\/[^ ]+)/g, 'https://stackoverflow.com/questions/35704715/regex-replace-with-html-tags-in-directive/$1'); return str.toLowerCase(); }; }) 

y en html

  

¿Has probado ng-bind-html?

  

En primer lugar, el método de reemplazo no cambia la cadena sino que devuelve una nueva cadena con los reemplazos. Cambia tu código a:

 tweet.text = tweet.text.replace(...).replace(...)...; 

En segundo lugar, {{tweet.text}} se reemplaza por texto escapado html. Cambiarlo a: