angularjs для вывода обычного текста вместо html
у меня есть такой текст:
<span>My text</span>
Я хочу отобразить без тегов:
My text
Я также не хочу применять теги, я хочу, чтобы лишить их. Какой простой способ сделать это?
угловой html:
<div>{{myText | htmlToPlaintext}}</div>
8 ответов:
jQuery примерно в 40 раз медленнее, пожалуйста, не используйте jQuery для этой простой задачи.
function htmlToPlaintext(text) { return text ? String(text).replace(/<[^>]+>/gm, '') : ''; }
использование :
var plain_text = htmlToPlaintext( your_html );
с углового.js:
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 не доступен, угловой.делегаты элемента к встроенному угловому подмножество jQuery, называемое "jQuery lite" или " jqLite.")
Так что вы просто могли бы сделать:
angular.module('myApp.filters', []). filter('htmlToPlaintext', function() { return function(text) { return angular.element(text).text(); } } );
использование:
<div>{{myText | htmlToPlaintext}}</div>
вы хотите использовать для этого встроенную 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>
Нет необходимости вставлять в html {{}} интерполяционные теги, как вы сделали {{myText}}.и не забудьте использовать ngSanitize в модуле, например
var app = angular.module("myApp", ['ngSanitize']);
и добавьте свою зависимость cdn в индекс.html страница https://cdnjs.com/libraries/angular-sanitize
var app = angular.module('myapp', []); app.filter('htmlToPlaintext', function() { return function(text) { return text ? String(text).replace(/<[^>]+>/gm, '') : ''; }; }); <p>{{DetailblogList.description | htmlToPlaintext}}</p>
вы можете использовать ng-bind-html, не забудьте ввести $ sanitize service в свой модуль Надеюсь, это поможет