2016-04-28 2 views
0

Ich habe eine Zeichenfolge, die HTML-Code hat. Also habe ich im Hinblick bin verbindlich wieKnockout HTML-Bindung und Länge von HTML in Bezug auf Zeichenfolge

<div data-bind="html : Notes()"></div> 

Jetzt möchte ich eine Klasse hinzufügen, basierend auf Länge von Schuldverschreibungen mit aus HTML-Elementen div.

Angenommen Notes = "<b>Hello</b>", dann Notes.length = 12 (With <b> and </b>)

Aber ich brauche alle HTML-Elemente zu ersetzen, und ich brauche Länge als 5 (Hallo) zu erhalten.

Wie kann ich dies unter der Zeile erreichen.

<div data-bind="html : Notes(), css:{myclass : Notes().length > 5}"></div> 
+1

statt HTML verwenden Text – guradio

+0

@guradio: Wenn ich Text verwenden, wird es mit allen Elementen als String angezeigt werden soll. Hier ist das Problem nicht mit HTML-Bindung. Ich muss die Bedingung basierend auf der Länge von Notes() ohne HTML-Elemente überprüfen. – Rayudu

Antwort

2

könnten Sie machen ein berechnet, dass ein virtuelles Element erzeugt und liefert deren Textlänge etwa so:

var noteLength = ko.computed(function() { 
    var tempElement = document.createElement("div"); 
    tempElement.innerHTML = Notes(); 

    return tempElement.innerText.length; 
}); 
Verwandte Themen