如何在传递的textparagraph中加粗特定单词(传递的参数)

时间:2014-11-25 18:35:30

标签: angularjs regex

我想在另一个传递的参数中加粗一个特定的单词(这是一个传递的参数),这是一个文本段落。

所以我所做的就是: - 搜索单词让我们说"帮助"在段落"我被卡住了,请帮助我" - 当这个词"帮助"在段落中找到然后用 help 替换它,以便段落变为"我被卡住了,请帮助我" 。我一直在尝试正则表达式,但无法弄清楚问题。

Html代码:

<div>
      {{ boldText(value.search_keywords, value.url.textRecieved) }}
</div>

AngularJS代码:

$scope.boldText=function(searchKeywordsList, textParagraph){
        var final_textParagraph;
        for (var index=0; index<searchKeywordsList.length; index++){
            if (textParagraph.indexOf(searchKeywordsList[index]) > -1) {
                var regex = new RegExp('\\*(.+?)\\*', 'g');
                var replace = '<b>$1</b>';
                var searchedKeyword = searchKeywordsList[index].replace(searchKeywordsList[index], '*'+searchKeywordsList[index]+'*');
               /* console.log(searchedKeyword);*/
                var boldValue = searchedKeyword.replace(regex, replace);
                console.log(boldValue);
                final_textParagraph = textParagraph.replace(searchKeywordsList[index], boldValue);
            }
            else{
                final_textParagraph = textParagraph;
            }
        }
        return final_textParagraph;
    };

当前输出:

  • 搜索关键字:

收入, 网络

  • 网站数据:

......安全性)最近担任Shape Security的全球销售副总裁。在此之前,Rotolo曾在Palo Alto Networks担任西部销售副总裁,在那里他帮助每年将收入从零增加到超过3.5亿美元。

预期输出:

  • 搜索关键字:

收入, 网络

  • 网站数据:

......安全性)最近担任Shape Security的全球销售副总裁。在此之前,Rotolo曾担任Palo Alto Network 的销售副总裁,在那里他帮助收入从零增长到每年超过3.5亿美元。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果要注入这样的标记,则需要包含ngSanitize并使用ng-bind-html。并且请不要使用<b>元素,而是使用像<span class="bold"></span>

这样的粗体样式的跨度

用法是

<ANY
  ng-bind-html="">
...
</ANY>

在你的情况下

<div ng-bind-html="boldText(value.search_keywords, value.url.textRecieved)"></div>

确保包含ngSanitize 阅读更多关于ng-bind-html:https://docs.angularjs.org/api/ng/directive/ngBindHtml

的信息