Regex durch HTML-Tags in Direktive ersetzen
Ich benutze Angular JS, um zu bekommen undng-repeat
über Twitter Tweets. Ich musste Teile der Tweet-Zeichenfolge hervorheben, z. B.@tag
und#hash
, also wurde vorgeschlagen, ich benutzereplace
, um DOM-Wrapper zu den Dingen hinzuzufügen, die ich hervorheben möchte.
Das Problem ist, da ich nicht direkt auf dem DOM ausgebe, und stattdessenng-repeating
Über eine Bereichsvariable scheinen die HTML-Tags nicht zu den Zeichenfolgen hinzugefügt zu werden.
Frag: Wie kann ich HTML-Tags an einen JS-String anhängen?
Direktives Snippet:
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>