2013-07-02 15 views
27

Utilizzando knockout.js, come includere un ritorno a capo nel testo associato all'attributo di testo di un elemento di paragrafo <p>.Knockout.js Carraige restituire nel paragrafo testo

Nel mio ViewModel ho generato una stringa di testo associata a <p> nella vista. Voglio includere i ritorni a capo nella stringa che il browser visualizza con le interruzioni di riga.

Includere <br /> o Environment.NewLine nella stringa non sembra funzionare.

risposta

15

È possibile utilizzare html binding.

JS:

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

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

Vista:

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

See fiddle

+1

Grazie. Perfetto – Martin

+0

se hai intenzione di fare questo, assicurati di codificare qualsiasi contenuto che non sia già codificato in HTML – bdukes

+0

Grazie, data-bind = "html: ..." è quello che ha fatto per me – SeanKPS

52

È necessario impostare una proprietà css nel proprio elemento. 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()); 

Quindi il codice funziona. con \n

+5

Penso che questa soluzione sia molto meglio perché non ci sono caratteri html specifici per html in javascript. – Samuel

+0

Sicuramente una soluzione migliore, soprattutto dove i dati sono dati modificati dall'utente, la soluzione HTML richiederebbe l'uso di un editor WYSIWYG che è completamente inutile –

+0

grazie mille! –

0

Si potrebbe anche usare campate per ottenere i vostri attacchi e poi il codice HTML sarà come al solito.

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