2013-07-02 14 views
27

Verwenden Sie knockout.js, wie schließe ich einen Wagenrücklauf in dem Text ein, der an das Textattribut eines Absatzelements <p> gebunden ist.Knockout.js Rückgabe in Absatztext

In meinem ViewModel habe ich eine Textzeichenfolge generiert, die an die <p> in der Ansicht gebunden ist. Ich möchte Wagenrücklauf in die Zeichenfolge einschließen, die der Browser mit den Zeilenumbrüchen anzeigt.

Einschließlich <br /> oder Environment.NewLine in der Zeichenfolge scheint nicht zu funktionieren.

Antwort

15

Sie können die html binding verwenden.

JS:

function AppViewModel() { 
    this.firstName = "Bert<br\>Test"; 
    this.lastName = "Bertington"; 
} 

// Activates knockout.js 
ko.applyBindings(new AppViewModel()); 

Ausblick:

<p>First name: <strong data-bind="html: firstName">todo</strong></p> 
<p>Last name: <strong>todo</strong></p> 

See fiddle

+1

Danke. Perfect – Martin

+0

Wenn Sie dies tun, stellen Sie sicher, alle Inhalte zu kodieren, die nicht bereits HTML-codiert sind – bdukes

+0

Danke, die Datenbindung = "html: ..." ist, was es für mich getan hat – SeanKPS

52

Sie müssen eine CSS-Eigenschaft in Ihrem Element festlegen. white-space: pre-wrap

<p style="white-space: pre-wrap">First name: <strong data-bind="text: firstName">todo</strong></p> 
<p>Last name: <strong>todo</strong></p> 

function AppViewModel() { 
    this.firstName = "Bert" + " \n " + "Test"; 
    this.lastName = "Bertington"; 
} 

// Activates knockout.js 
ko.applyBindings(new AppViewModel()); 

Dann funktioniert der Code. mit \n

+5

Ich denke, diese Lösung ist viel besser, weil es keine HTML-Zeichen speziell für HTML im Javascript gibt. – Samuel

+0

Definitiv eine bessere Lösung, besonders wenn die Daten vom Benutzer editierte Daten sind, würde die HTML-Lösung die Verwendung eines WYSIWYG-Editors erfordern, der völlig unnötig ist –

+0

vielen Dank! –

0

Sie könnten Spannweiten auch benutzen, um Ihre Bindungen zu bekommen und dann wird das html wie gewohnt sein.

<span data-bind="text: firstName"></span><br /><span data-bind="text: lastName"></span>