我有一些这样的文字:
<span>My text</span>
我想不带标签显示:
My text
我也不想应用标签,我想剥离它们。有什么简单的方法可以做到这一点?
角HTML:
<div>{{myText | htmlToPlaintext}}</div>
我有一些这样的文字:
<span>My text</span>
我想不带标签显示:
My text
我也不想应用标签,我想剥离它们。有什么简单的方法可以做到这一点?
角HTML:
<div>{{myText | htmlToPlaintext}}</div>
jQuery 大约是 SLOWER 的 40 倍,请不要将 jQuery 用于这个简单的任务。
function htmlToPlaintext(text) {
return text ? String(text).replace(/<[^>]+>/gm, '') : '';
}
用法 :
var plain_text = htmlToPlaintext( your_html );
angular.module('myApp.filters', []).
filter('htmlToPlaintext', function() {
return function(text) {
return text ? String(text).replace(/<[^>]+>/gm, '') : '';
};
}
);
利用 :
<div>{{myText | htmlToPlaintext}}</div>
来自https://docs.angularjs.org/api/ng/function/angular.element
角元素
将原始 DOM 元素或 HTML 字符串包装为 jQuery 元素(如果 jQuery 不可用,则 angular.element 委托给 Angular 的内置 jQuery 子集,称为“jQuery lite”或“jqLite”。)
所以你可以这样做:
angular.module('myApp.filters', []).
filter('htmlToPlaintext', function() {
return function(text) {
return angular.element(text).text();
}
}
);
用法:
<div>{{myText | htmlToPlaintext}}</div>
var app = angular.module('myapp', []);
app.filter('htmlToPlaintext', function()
{
return function(text)
{
return text ? String(text).replace(/<[^>]+>/gm, '') : '';
};
});
<p>{{DetailblogList.description | htmlToPlaintext}}</p>
您想为此使用内置的浏览器 HTML 条,而不是为自己应用正则表达式。它更安全,因为永远绿色的浏览器会为您完成工作。
angular.module('myApp.filters', []).
filter('htmlToPlaintext', function() {
return function(text) {
return stripHtml(text);
};
}
);
var stripHtml = (function () {
var tmpEl = $document[0].createElement("DIV");
function strip(html) {
if (!html) {
return "";
}
tmpEl.innerHTML = html;
return tmpEl.textContent || tmpEl.innerText || "";
}
return strip;
}());
将其包装在自执行函数中的原因是为了重用元素创建。
<div ng-bind-html="myText"></div>
无需像 {{myText}} 那样放入 html {{}} 插值标签。
并且不要忘记在module中使用 ngSanitize,例如
var app = angular.module("myApp", ['ngSanitize']);
并在 index.html 页面中添加其 cdn 依赖项https://cdnjs.com/libraries/angular-sanitize