टेम्पलेट में शामिल करने के लिए मैं इस तरह से कुछ कैसे लिख सकता हूं, लेकिन हम्ल में?
<script>
$(document).ready( function() {
$('body').addClass( 'test' );
} );
</script>
टेम्पलेट में शामिल करने के लिए मैं इस तरह से कुछ कैसे लिख सकता हूं, लेकिन हम्ल में?
<script>
$(document).ready( function() {
$('body').addClass( 'test' );
} );
</script>
जवाबों:
:javascript
$(document).ready( function() {
$('body').addClass( 'test' );
} );
डॉक्स: http://haml.info/docs/yardoc/file.REFERENCE.html#javascript-fterter
आप वास्तव में क्रिस चालर्स अपने जवाब में क्या कर सकते हैं, लेकिन आपको यह सुनिश्चित करना होगा कि एचएएमएल जावास्क्रिप्ट को पार्स नहीं करता है। यह दृष्टिकोण वास्तव में उपयोगी है जब आपको किसी अन्य प्रकार की तुलना में उपयोग करने की आवश्यकता होती है text/javascript
, जो कि मुझे करने की आवश्यकता थी MathJax
।
आप plain
एचएएमएल को स्क्रिप्ट को पार्स करने और अवैध घोंसले के शिकार को फेंकने के लिए फ़िल्टर का उपयोग कर सकते हैं :
%script{type: "text/x-mathjax-config"}
:plain
MathJax.Hub.Config({
tex2jax: {
inlineMath: [["$","$"],["\\(","\\)"]]
}
});
तो मैंने उपरोक्त कोशिश की: जावास्क्रिप्ट जो काम करता है :) हालांकि HAML सीडीएटीए में उत्पन्न कोड को लपेटता है जैसे:
<script type="text/javascript">
//<![CDATA[
$(document).ready( function() {
$('body').addClass( 'test' );
} );
//]]>
</script>
निम्न HAML इसमें (उदाहरण के लिए) टाइपटेकिट या गूगल एनालिटिक्स कोड शामिल करने के लिए विशिष्ट टैग उत्पन्न करेगा।
%script{:type=>"text/javascript"}
//your code goes here - dont forget the indent!
CDATA
मेरे लिए कुछ नहीं जोड़ा , और न ही %script
मेरे लिए काम किया, अगर js में कोई अनियमित मांग थी।
मैं fileupload-jquery का उपयोग कर रहा हूँ । मूल js नीचे है:
<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download fade">
{% if (file.error) { %}
<td></td>
<td class="name"><span>{%=file.name%}</span></td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
{% } else { %}
<td class="preview">{% if (file.thumbnail_url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" rel="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
{% } %}</td>
<td class="name">
<a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
</td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td colspan="2"></td>
{% } %}
<td class="delete">
<button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}">
<i class="icon-trash icon-white"></i>
<span>{%=locale.fileupload.destroy%}</span>
</button>
<input type="checkbox" name="delete" value="1">
</td>
</tr>
{% } %}
</script>
सबसे पहले मैंने :cdata
( html2haml से ) कन्वर्ट करने के लिए उपयोग किया था , यह ठीक से काम नहीं करता है (हटाएं बटन कॉलबैक में संबंधित घटक को हटा नहीं सकता है)।
<script id='template-download' type='text/x-tmpl'>
<![CDATA[
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download fade">
{% if (file.error) { %}
<td></td>
<td class="name"><span>{%=file.name%}</span></td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
{% } else { %}
<td class="preview">{% if (file.thumbnail_url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" rel="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
{% } %}</td>
<td class="name">
<a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
</td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td colspan="2"></td>
{% } %}
<td class="delete">
<button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}">
<i class="icon-trash icon-white"></i>
<span>{%=locale.fileupload.destroy%}</span>
</button>
<input type="checkbox" name="delete" value="1">
</td>
</tr>
{% } %}
]]>
</script>
इसलिए मैं :plain
फ़िल्टर का उपयोग करता हूं :
%script#template-download{:type => "text/x-tmpl"}
:plain
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download fade">
{% if (file.error) { %}
<td></td>
<td class="name"><span>{%=file.name%}</span></td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
{% } else { %}
<td class="preview">{% if (file.thumbnail_url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" rel="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
{% } %}</td>
<td class="name">
<a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
</td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td colspan="2"></td>
{% } %}
<td class="delete">
<button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}">
<i class="icon-trash icon-white"></i>
<span>{%=locale.fileupload.destroy%}</span>
</button>
<input type="checkbox" name="delete" value="1">
</td>
</tr>
{% } %}
परिवर्तित परिणाम मूल के समान ही है।
तो :plain
इस सेनेरियो में फ़िल्टर मेरी जरूरत को पूरा करता है।
: सादा फ़िल्टर किए गए पाठ को पार्स नहीं करता है। यह HTML टैग के बिना पाठ के बड़े ब्लॉक के लिए उपयोगी है, जब आप लाइनों को शुरू नहीं करना चाहते हैं। या - पार्स किया जाना।
अधिक विस्तार के लिए, कृपया देखें haml.info