angularjs输出纯文本而不是html

时间:2013-06-25 05:00:18

标签: javascript html angularjs

我有一些这样的文字:

<span>My text</span>

我想显示没有标签:

My text

我也不想应用标签,我想剥离它们。有什么简单的方法可以做到这一点?

Angular html:

<div>{{myText | htmlToPlaintext}}</div>

8 个答案:

答案 0 :(得分:205)

jQuery is about 40 times SLOWER, please do not use jQuery for that simple task.

function htmlToPlaintext(text) {
  return text ? String(text).replace(/<[^>]+>/gm, '') : '';
}

用法:

var plain_text = htmlToPlaintext( your_html );

使用angular.js:

angular.module('myApp.filters', []).
  filter('htmlToPlaintext', function() {
    return function(text) {
      return  text ? String(text).replace(/<[^>]+>/gm, '') : '';
    };
  }
);

使用:

<div>{{myText | htmlToPlaintext}}</div>  

答案 1 :(得分:20)

来自https://docs.angularjs.org/api/ng/function/angular.element

  

<强> angular.element

     

将原始DOM元素或HTML字符串包装为jQuery元素(如果是jQuery   不可用,angular.element委托Angular的内置   jQuery的子集,称为“jQuery lite”或“jqLit​​e。”)

所以你可以做到:

angular.module('myApp.filters', []).
  filter('htmlToPlaintext', function() {
    return function(text) {
      return angular.element(text).text();
    }
  }
);

用法:

<div>{{myText | htmlToPlaintext}}</div>

答案 2 :(得分:4)

var app = angular.module('myapp', []);

app.filter('htmlToPlaintext', function()
{
    return function(text)
    {
        return  text ? String(text).replace(/<[^>]+>/gm, '') : '';
    };
});

<p>{{DetailblogList.description | htmlToPlaintext}}</p>

答案 3 :(得分:3)

您希望使用内置的浏览器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;
}());

将其包装在自执行函数中的原因是重用元素创建。

答案 4 :(得分:3)

<div ng-bind-html="myText"></div> 无需像{{myText}}一样输入html {{}}插值标记。

并且不要忘记在模块中使用ngSanitize,例如 var app = angular.module("myApp", ['ngSanitize']);

并在index.html页面https://cdnjs.com/libraries/angular-sanitize

中添加其cdn依赖项

答案 5 :(得分:0)

您可以使用ng-bind-html,不要忘记将$ sanitize服务注入您的模块 希望它有所帮助

答案 6 :(得分:-2)

使用ng-bind-html这只是最恰当和最简单的方法

答案 7 :(得分:-7)

使用此功能,如

 String.prototype.text=function(){
   return this ? String(this).replace(/<[^>]+>/gm, '') : '';
 }

  "<span>My text</span>".text()
  output:
  My text

<强> Fiddle