2012-04-11 5 views
37

अद्यतन जेड v0.24.0 विशेषताओं के लिए एक != वाक्य रचना के साथ फिक्स यह। option(value!='<%= id %>')जेड को एचटीएमएल एन्कोडिंग तत्व विशेषताओं को कैसे रोकें, और एक शाब्दिक स्ट्रिंग मान का उत्पादन कैसे करें?


मैं जेड, जहां विकल्प के मूल्य एक UnderscoreJS टेम्पलेट मार्कर है के साथ एक <option> का निर्माण करने की कोशिश कर रहा हूँ: <%= id %> लेकिन मैं यह काम करने के लिए क्योंकि जेड &lt;= id &gt; करने के लिए अपने मार्कर पाठ परिवर्तित नहीं मिल सकता है ।

<script id="my-template" type="text/template"> 
    <select id='type'> 
    <% _.each(deviceTypes, function(type){ %> 
    <option value="&lt;%= type.id %&gt;"> <%= type.name %> </option> 
    <% }) %> 
    </select> 
</script> 

नोट बहुत:

<script id="my-template" type="text/template"> 
    <select id='type'> 
    <% _.each(deviceTypes, function(type){ %> 
    <option value="<%= type.id %>"> <%= type.name %> </option> 
    <% }) %> 
    </select> 
</script> 

लेकिन क्या मैं बजाय मिलता है, यह है:

script(id="my-template", type="text/template") 
    select(id="type") 
    &lt;% _.each(deviceTypes, function(type){ %> 
    option(value='&lt;%= type.id %>') <%= type.name %> 
    &lt;% }) %> 

मैं इसे इस एचटीएमएल उत्पादन की उम्मीद:

यहाँ मेरी जेड मार्कअप है आउटपुट की <option> लाइन में सूक्ष्म अंतर ... value टी की विशेषता वह विकल्प एचटीएमएल एन्कोड किया गया है।

कैसे मैं HTML यह मान एन्कोडिंग से जेड रोकूँ? मुझे इसे शाब्दिक मूल्य का उत्पादन करने की आवश्यकता है, वैसे ही यह विकल्प के पाठ के साथ भी करता है।

+0

मुझे हाल ही में अंडरस्कोर का उपयोग करके विशेषता मान सेट करने के साथ एक ही समस्या थी और आसपास एक काम मिला। बहुत सुंदर नहीं है, लेकिन कच्चे HTML का उपयोग करने से बेहतर है। –

उत्तर

5

इस लेखन मैं वहाँ यह करने के लिए एक तरीका है पर विश्वास नहीं है के रूप में। यह समस्या देखें: https://github.com/visionmedia/jade/issues/198

मैं इसे हल करने के लिए कच्चे HTML में ड्रॉप करना समाप्त कर दिया। उपसर्ग।

+2

धन्यवाद, केविन। वापस गिरना | अब यह काम कर रहा है ... खून बहने वाले किनारे पर जीवन ...: पी –

+0

यह स्वीकार्य उत्तर नहीं होना चाहिए, मिनीम का जवाब देखें। – CatalinBerta

95

Derick पहले ही उल्लेख किया गया है कि जेड अद्यतन में unescape एचटीएमएल एन्कोडिंग के लिए नई सुविधा जोड़ी है, लेकिन मैं कोई है जो पहचान नहीं कर पाने के लिए कुछ परिशिष्ट जोड़ना चाहते हैं।

- var html = "<script></script>" 
| !{html} <-- Escaped 
| #{html} <-- Encoded 

से https://github.com/visionmedia/jade

+1

(! && Minime) ने मेरा दिन बनाया :) –

+1

http://jade-lang.com/reference/code/ के अनुसार! {Html} अनचाहे है और # {html} इकाइयों को परिवर्तित करता है – rndstr

+0

क्या हम इसे मजबूर कर सकते हैं स्वीकृत उत्तर? –

33

यह सुविधा added to Jade किया गया है। आप बस != ऑपरेटर का उपयोग करता है, तो आप विशेषता मान unescape हैं:

script#my-template(type='text/template') 
    a(href!='<%= url =>') Clicky clicky... 
+0

यह काम करता है! हालांकि, वर्ग गुणों के लिए काम नहीं लग रहा है। – cgenco

+0

@cgenco इसे आपके जेड का संस्करण प्रदान करना चाहिए> 1.9.2 –

+2

मुझे पता है - [मैंने इसे ठीक किया है] (https://github.com/jadejs/jade/issues/1087#issuecomment-20779899);) – cgenco

0

तो मैं इस के लिए इसी तरह एक मुद्दा है, जहां मैं अपने जेड दृश्यों में से एक के अंदर एक अंडरस्कोर टेम्पलेट बनाना चाहता था रहा था। <option> टैग में selected विशेषता सेट करने के लिए अंडरस्कोर टेम्पलेट का एक टुकड़ा आवश्यक है।

शुरू में मैं अंडरस्कोर वापसी "चयनित" या "" होने की कोशिश की। दुर्भाग्यवश, Jade doesn't have a way to display an attribute with no value और इसमें गैर-भागने वाले विशेषता नामों का कोई तरीका नहीं है (अंडरस्कोर बिट्स उद्धरण चिह्नों के बिना वापस आ रहे थे)।

सौभाग्य से, आप एक विशेषता की मूल्य unescape लिए, उद्धरण चिह्नों के संरक्षण में सक्षम हैं।

इस उदाहरण में, मैं एक स्ट्रिंग मान मिलान मालिक प्रकार के आधार पर एक ड्रॉपडाउन के एक मूल्य का चयन कर रहा हूँ। मैंने एक सहायक कार्य सेट किया है इसलिए मुझे उद्धरण चिह्नों को मैन्युअल रूप से बचाना नहीं होगा।

- var checkType = function(type) { return "<%= contact.type == '" + type + "' %>" }; 

.clearfix 
    label Title: 
    .input 
    select(type="text", name="contact[title]", class="new-title") 
     option(value="") Choose Title 
     option(value="manager", selected="#{ checkType('manager') }") Manager 
     option(value="member", selected="#{ checkType('member') }") Member 
     option(value="owner", selected="#{ checkType('owner') }") Owner 
     option(value="president", selected="#{ checkType('president') }") President 
     option(value="individual", selected="#{ checkType('individual') }") Individual 
     option(value="main_contact", selected="#{ checkType('main_contact') }") Main Contact 

कुछ के अनुसार, तुम यहाँ !{} उपयोग करने के लिए पूरी तरह से सभी एन्कोडिंग (<, >, etc.), लेकिन इस जेड के अपने संस्करण पर काम नहीं किया से बचने के लिए सक्षम होना चाहिए। मैं "^0.30" का उपयोग कर रहा हूं और वर्तमान संस्करण 1.x है।

अगर कोई यह सत्यापित कर सकता है कि !{} जेड के नवीनतम संस्करण का उपयोग करके इस स्थिति में काम करता है, तो मैं अपना उत्तर अपडेट करूंगा।

+0

'! {} 'मेरे लिए काम नहीं करता है। –

+0

'! {}' V2.0.0-alpha8 में पग (जेड का नया नाम) में काम करता है –

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