【发布时间】:2015-08-18 09:08:06
【问题描述】:
我正在使用过滤器从一段内容中转换任何 URL 或电子邮件 ID。但它被呈现为字符串而不是可点击的 HTML 元素。
过滤 JS
angular.module('myApp.filters', []).filter('parseUrl', function() {
var urls = /(\b(https?|ftp):\/\/[A-Z0-9+&@#\/%?=~_|!:,.;-]*[-A-Z0-9+&@#\/%=~_|])/gim
var emails = /(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim
return function(text) {
if (text.match(urls)) {
text = text.replace(urls, "<a href=\"$1\" target=\"_blank\">$1</a>")
}
if (text.match(emails)) {
text = text.replace(emails, "<a href=\"mailto:$1\">$1</a>")
}
return text
}
});
上面的代码给我输出了一个平面文本而不是可点击的 HTML 元素。
【问题讨论】:
-
或者直接咨询angularjs docs
-
请检查更新。进入我的问题。我添加了一个小提琴。
-
当您只想检查字符串中是否存在模式时,使用
test比使用match更好
标签: angularjs angularjs-filter