2013-04-13 5 views
5

मेरे सर्वर से जेएसओएन प्रतिक्रिया लौटाई गई एक लंबी स्ट्रिंग (एक संदेश निकाय, या बहु-रेखा नोट) शामिल है।हैंडलबर्स टेम्पलेट में मल्टीलाइन स्ट्रिंग्स को संभालना

एक ठेठ message.body कुछ इस तरह दिख सकता है:

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

अब हैंडल का उपयोग करना, मैं इस

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

हालांकि तरह embedding कर रहा हूँ, इस html में इस में प्रस्तुत करता है:

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

Sincerely, 

Austin"</p> 

मैं इसे प्रत्येक व्यक्तिगत पंक्ति को प्रस्तुत करने के लिए कैसे प्राप्त कर सकता हूं अपना एचटीएमएल अनुच्छेद [पी] टैग? रेल में, मैं कुछ इस तरह (haml में) के साथ ऐसा होता

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

उत्तर

4

Handlebars टेम्पलेट में तर्क पसंद नहीं है। आप आम तौर पर अपने डेटा की प्रक्रिया से पहले टेम्प्लेट कुछ इस तरह से देखता है:

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

और फिर टेम्पलेट है कि सरणी फ़ीड:

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

ऐसे मामलों में आपका टेम्पलेट इस प्रकार दिखाई देगा:

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

डेमो: http://jsfiddle.net/ambiguous/Gbu5w/

10

आप एक बर जोड़ सकता है s 'हेल्पर'

http://handlebarsjs.com/expressions.html (सहायकों के लिए नीचे स्क्रॉल)

उदा

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); 
}); 
फिर अपने टेम्पलेट कॉल में

{{paragraphSplit body}} 
संबंधित मुद्दे