2013-11-20 5 views
12

मैंने अपने टेम्पलेट के लिए एक सरल सहायक लिखा। यहां कोड है:हैंडलबार सहायक - एचटीएमएल वापस पाठ नहीं

Handlebars.registerHelper('splitQuote', function (string) { 
    if (string.indexOf('|') !== -1) { 
     return string.replace('|', '<span>') + '</span>'; 
    } 
    return string; 
}); 

तो मैं एक स्ट्रिंग पास करता हूं, और '|' द्वारा स्ट्रिंग को विभाजित करता हूं। चरित्र। मैं भी दूसरे भाग को स्पैन टैग में रखना चाहता हूं।

समस्या यह है कि, जो परिणाम लौटाया जा रहा है वह शुद्ध पाठ है, इसलिए मुझे टेक्स्ट की तरह स्पैन टैग मिलते हैं, HTML नहीं।

क्या किसी को पता है कि पकड़ क्या है?

Tnx

उत्तर

31

आप अपने सहायक में एचटीएमएल के रूप में स्ट्रिंग चिह्नित करने के लिए यदि आप इसे से बचने के लिए नहीं हैंडल करना चाहते हैं। ऐसा करने के लिए Handlebars.safeString का उपयोग करें। नीचे के रूप में टिप्पणी में उल्लेख किया है कि आप शायद स्ट्रिंग पारित Handlebars.Utils.escapeExpression(string) का उपयोग कर स्ट्रिंग एन्कोड करने के लिए इससे पहले कि आप अपने कस्टम स्वरूपण कर बच चाहिए अपनी आवश्यकताओं

Handlebars.registerHelper('splitQuote', function(string) { 
    if (string.indexOf('|') !== -1) { 
     return new Handlebars.SafeString(string.replace('|', '<span>') + '</span>'); 
    } 
    return string; 
}); 

सूट चाहिए। मैं इस तरह लिखने की सिफारिश करता हूं:

Handlebars.registerHelper('splitQuote', function(string) { 
    string = Handlebars.Utils.escapeExpression(string); 
    if (string.indexOf('|') !== -1) { 
     string = string.replace('|', '<span>') + '</span>'; 
    } 
    return new Handlebars.SafeString(string); // mark as already escaped 
}); 
+2

आप चाहिए आप SafeString उपयोग करने के लिए जा रहे हैं '' रों जोड़ने से पहले मैन्युअल रूप से एचटीएमएल एनकोड 'स्ट्रिंग'। –

7

आपको SafeString का उपयोग करने की आवश्यकता नहीं है।

Handlebars web site से

, एचटीएमएल पलायन अनुभाग:: इसके बजाय, हैंडल से "ट्रिपल मूंछें" का उपयोग

Handlebars एचटीएमएल-निकल जाता द्वारा लौटाए गए मानों एक {{अभिव्यक्ति}}। यदि आप हैंडलबार्स को किसी मूल्य से बचने के लिए नहीं चाहते हैं, तो "ट्रिपल-स्टैश", {{{।

तो, अपने html में एक सरल ट्रिपल उद्धरण से बचने से बचने जाएगा:

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