【发布时间】:2015-02-13 11:57:11
【问题描述】:
我正在尝试突出显示现有页面中的文本。这些页面都构建得像
<p>some text</p>
<p>some more text</p>
等等。
现在我放了一个输入框,里面的所有文本都会突出显示页面上的文本:
<input ng-model='highlightthis'>
我在 Angular 应用程序中构建了一个过滤器,如下所示:
app.filter('highlight', function($sce) {
return function(text, phrase) {
if (phrase) text = text.replace(new RegExp('('+phrase+')', 'gi'),
'<span class="highlighted">$1</span>')
return $sce.trustAsHtml(text)
}
});
还有一个快速的样式:
<style>.highlighted { background: yellow; } </style>
现在.. 我认为我需要做的就是将过滤器添加到我现有页面中的所有<p>。但我似乎找不到合适的语法:
<p ng-bind-html="$(this).innerHTML | highlight:highlightthis>some text</p>
等等。
但它不起作用。有人知道如何将<p> 的内部文本链接到过滤器吗?
此外,可能有一些聪明的方法可以在页面加载时将 ng-bind 添加到所有<p>,而不是手动将其添加到页面上的所有 p 中。任何提示将不胜感激:)
【问题讨论】:
-
最好使用编辑器顶部的代码格式
{},而不是内联的```代码块,这样你就得到了正确的格式。
标签: angularjs filter highlight