angularjs, aby wyświetlić zwykły tekst zamiast html


Mam taki tekst:
<span>My text</span>

Chcę wyświetlać bez tagów:
My text

Nie chcę też stosować etykiet, chcę je usunąć. Jaki jest najłatwiejszy sposób?
Angular html:
<div>{{myText | htmlToPlaintext}}

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

jQuery jest około 40 razy wolniejszy
http://jsperf.com/strip-html-jquery-vs-pure-js

nie używaj jQuery do tego prostego zadania.
function htmlToPlaintext(text) {
return text ? String(text).replace(/<[^>]+>/gm, '') : '';
}

posługiwać się:
var plain_text = htmlToPlaintext( your_html );


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

posługiwać się:
<div>{{myText | htmlToPlaintext}}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

od

https://docs.angularjs.org/api ... ement
https://docs.angularjs.org/api ... ement
angular.element

pakowanie surowego elementu DOM lub ciągu HTML jako elementu jQuery (jeśli jQuery
niedostępne, angular.element deleguje wartość wbudowaną do Angular
podzbiór jQuery o nazwie „jQuery lite” lub „jqLite”).

Możesz więc po prostu zrobić:
angular.module('myApp.filters', []).
filter('htmlToPlaintext', function() {
return function(text) {
return angular.element(text).text();
}
});

Za pomocą:
<div>{{myText | htmlToPlaintext}}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

var app = angular.module('myapp', []);app.filter('htmlToPlaintext', function()
{
return function(text)
{
return text ? String(text).replace(/<[^>]+>/gm, '') : '';
};
});{{DetailblogList.description | htmlToPlaintext}}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Chcesz użyć do tego wbudowanej przeglądarki pasków HTML, zamiast stosować sobie wyrażenie regularne. Jest bezpieczniejszy, ponieważ zielona przeglądarka zawsze wykonuje to za Ciebie.
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;
}());

Powodem zawijania go w samowykonującą się funkcję jest ponowne użycie tworzenia elementu.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

& < div ng-bind-html = "myText" & > & </div & >
nie ma potrzeby wstawiania tagów interpolacji do html {{}}, ponieważ zrobił {{myText}} ...
i nie zapomnij użyć ngSanitize w module, np.
var app = angular.module ("myApp", ['ngSanitize']);
i dodaj zależność cdn do strony index.html.

https://cdnjs.com/libraries/angular-sanitize
https://cdnjs.com/libraries/angular-sanitize
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz użyć ng-bind-html, nie zapomnij wstrzyknąć usługi $ sanitize do swojego modułu
Mam nadzieję że to pomoże
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użyj ng-bind-html to tylko poprawny i najłatwiejszy sposób
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użyj tej funkcji jak
String.prototype.text=function(){
return this ? String(this).replace(/<[^>]+>/gm, '') : '';
} "<span>My text</span>".text()
output:
My text


Fiddle

http://jsfiddle.net/zVMHK/32/

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się