我想在另一个传递的参数中加粗一个特定的单词(这是一个传递的参数),这是一个文本段落。
所以我所做的就是: - 搜索单词让我们说"帮助"在段落"我被卡住了,请帮助我" - 当这个词"帮助"在段落中找到然后用 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亿美元。
我做错了什么?
答案 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
的信息