javascript - 正则表达式替换指令中的 html 标签

标签 javascript html angularjs regex

我正在使用 Angular JS 获取 ng-repeat通过 Twitter 推文。我需要突出显示推文字符串的部分内容,例如 @tag#hash ,所以建议我使用 replace在我想要突出显示的内容周围添加 DOM 包装器。

问题是,因为我没有直接输出到 DOM,而是 ng-repeating在范围变量上,html 标签似乎没有添加到字符串中。

问题:如何将 html 标签附加到 JS 字符串?

<小时/>

指令片段:

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>

最佳答案

像这样使用过滤器

  filterExample.filter('filterName', function () {
    return function (text) {
    var str = text.replace(/(@[^ ]+)/g, '<a class="user">$1</a>').
    replace(/(#[^ ]+)/g, '<span class="hash">$1</span>').
    replace(/(https?:\/\/[^ ]+)/g, '<a href="$1">$1</a>');
        return str.toLowerCase();
    };
 })

和 html

  <div ng-repeat="tweet in tweets" class="post-body clearfix">
      <span ng-bind-html="tweet.text | filterName"></span>
    </div>

关于javascript - 正则表达式替换指令中的 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35704715/

相关文章:

c# - 用 twitter bootstrap 装饰 @Html.Textbox?

javascript - Angular 中的 HTTP 请求

angularjs - Angular 多个 md-theme-styles

javascript - 将脚本添加到 asp.net 内容页面

javascript - Promise 在 Node module.exports 中返回未定义

javascript - 输入谷歌地图方向

java - AngularJS + Spring + REST——发送多个文件和数据

javascript - Mongodb 对每个文档数组中的所有相同字段求和 - Map-Reduce

javascript - Vue.js - 如何获取和设置组件输入字段的值?

javascript - 如何在 donut chart 中间加一个圆圈并在d3 js中填充?