我有这样的一段文本:
<span>My text</span>
我想要显示没有标签的内容:My text
我也不想应用标签,我想去掉它们。有什么简单的方法可以做到这一点?
Angular HTML:
<div>{{myText | htmlToPlaintext}}</div>
我有这样的一段文本:
<span>My text</span>
我想要显示没有标签的内容:My text
我也不想应用标签,我想去掉它们。有什么简单的方法可以做到这一点?
Angular HTML:
<div>{{myText | htmlToPlaintext}}</div>
使用jQuery的速度比纯JavaScript慢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
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>
angular.element('<div>'+text+'</div>').text();
- Chris Jacobtext
没有被包含在任何 HTML 标签中,这段代码将会失败。因此,为了更加健壮,应该改为:return angular.element('<div>' + text + '</div>')
。 - Episodexvar app = angular.module('myapp', []);
app.filter('htmlToPlaintext', function()
{
return function(text)
{
return text ? String(text).replace(/<[^>]+>/gm, '') : '';
};
});
<p>{{DetailblogList.description | htmlToPlaintext}}</p>
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 {{}}插值标签。
而且不要忘记在模块中使用ngSanitize,例如:
var app = angular.module("myApp", ['ngSanitize']);
并在index.html页面中添加其CDN依赖项https://cdnjs.com/libraries/angular-sanitize
使用ng-bind-html,这是最合适和最简单的方法。
使用此函数的方式如下:
String.prototype.text=function(){
return this ? String(this).replace(/<[^>]+>/gm, '') : '';
}
"<span>My text</span>".text()
output:
My text
{{链接1:Fiddle}}