2012-06-23 18 views
14

backbone.js के साथ बनाए गए ऐप के लिए underscore.js टेम्पलेट के अंदर चर सेट अप करने के लिए कैसे? मैं सिर्फ पुन: प्रयोज्य संसाधित तार बनाना चाहता हूं। साथ ही, underscore.js के अंतर्निहित कार्यों जैसे _.escape का उपयोग उन चरों को संसाधित करने के लिए किया जा सकता है?underscore.js टेम्पलेट के अंदर चर

<script type="text/html" id="templateresults"> 

<p><%= encodeURIComponent(title) %></p> // this works 

// try 1: 
var encodedTitle = encodeURIComponent(title); // shows up as regular text 
<p>'+encodedTitle+'</p> // this doesn't work and shows up as regular text 

// try 2: 
<% var encodedTitle = encodeURIComponent(title); %> // nothing shows up 
<p><% '+encodedTitle+' %></p> // nothing shows up 

</script> 

title एक JSON आइटम (टेक्स्ट स्ट्रिंग) है।

एन्कोडेड उत्पादन: This%20is%20a%20Sample%20Title
नियमित उत्पादन: This is a Sample Title

उत्तर

20

आपका कोशिश 2 लगभग सही है लेकिन टैग जहां उत्पादन encodedTitle शुरू में = याद आ रही है और स्ट्रिंग में + जरूरत नहीं है। होना चाहिए:

<p><%= encodedTitle %></p> 

वैकल्पिक रूप से आप भी कर सकता है:

<p><% print(encodedTitle) %></p> 

अंडरस्कोर टेम्पलेट में, किसी भी जावास्क्रिप्ट आप का मूल्यांकन <% %> अंदर निहित किया जाना चाहिए चाहते हैं, इसलिए क्यों अपने दूसरे प्रयास में बस जावास्क्रिप्ट एक के रूप में आउटपुट स्ट्रिंग। आपने शीर्ष पर अपने नमूने में = का सही ढंग से उपयोग किया है लेकिन इसे 2 कोशिश में छोड़ दिया है।

= टेम्पलेटिंग इंजन को स्ट्रिंग के रूप में संलग्न जावास्क्रिप्ट के परिणाम को आउटपुट करने के लिए बताता है। यदि आप = का उपयोग नहीं करते हैं, तो जावास्क्रिप्ट निष्पादित किया गया है, लेकिन आउटपुट कुछ भी नहीं है। अंडरस्कोर के टेम्पलेट फ़ंक्शन को = का उपयोग करने के विकल्प के रूप में प्रदान करते हैं, मुझे नहीं पता कि एक तरफ दूसरे की तुलना में बेहतर है।

+0

मीठे! यह काम करता हैं। धन्यवाद! – Steve

संबंधित मुद्दे