2013-04-13 11 views
5

Odpowiedź JSON zwrócona z mojego serwera zawiera długi ciąg (treść wiadomości lub notatka o wielu wierszach).Obsługa ciągów wielowierszowych w szablonie kierownicy

Typowym message.body może wyglądać tak:

"Hi!\r\n\r\nHow's life? Everything is well with me\r\n\r\nSincerely,\r\n\r\nAustin\r\n" 

Korzystanie kierownicę Teraz jestem osadzanie się ten

<p>{{body}}</p> 

Jednak to czyni się to w html:

<p>"Hi! 
How's life? Everything is well with me 

Sincerely, 

Austin"</p> 

Jak mogę to zrobić, aby renderować poszczególne linie w obrębie własny tag akapitu [p] html? w szynach, chciałbym to zrobić z czymś takim (w haml)

- note.body.each_line do |x| 
    %p= x 

Odpowiedz

4

Kierownica nie lubi logikę w szablonie. Zazwyczaj przetwarzanie danych przed szablon widzi go coś takiego:

var lines = "...".split(/(?:\r\n)+/); 

a potem nakarmić tę tablicę do szablonu:

var html = tmpl({ body: lines }); 

Szablon w takich przypadkach będzie wyglądać następująco:

{{#each body}} 
    {{.}} 
{{/each}} 

Demo: http://jsfiddle.net/ambiguous/Gbu5w/

10

można dodać kierownicy s 'pomocnika'

http://handlebarsjs.com/expressions.html (przewijanie do pomocników)

np

Handlebars.registerHelper('paragraphSplit', function(plaintext) { 
    var i, output = '', 
     lines = plaintext.split(/\r\n|\r|\n/g); 
    for (i = 0; i < lines.length; i++) { 
     if(lines[i]) { 
      output += '<p>' + lines[i] + '</p>'; 
     } 
    } 
    return new Handlebars.SafeString(output); 
}); 

Następnie w wywołaniu szablonu

{{paragraphSplit body}} 
Powiązane problemy