2012-11-28 12 views
9

Aynı sayfada Mustache.js aracılığıyla oluşturulacak küçük bir şablon dizim var. Şablonlar için ayrı html dosyaları oluşturmam gerekiyor. şablonları saklamak içinBir HTML şablonunda bir HTML şablonunu nasıl doğru bir şekilde saklayabilirim?

Seçenekler:

  1. javascript değişkenlerde saklanması: hackish satırlı dizeleri, tırnak kaçan bir sürü. Gizli adların içHTML'si olarak saklamak

Yöntem # 2'yi denedim, ancak düzgün çalışmıyor gibi görünmüyor.

Fiddle: http://jsfiddle.net/RHwnq/2/

<html> 
<head></head> 
<body> 
<div id='templates' class='hide' align=""> 
     <div id='tableTemplate'> 
      <table class="table"> 
       {{#name_list}} 
        <tr><td> {{name}} </td></tr> 
       {{/name_list}} 
      </table> 
     </div> 
</div> 

<script> 
var template = $('#tableTemplate').html(); 
console.log(template); 
</script> 

</body> 
</html> 

Bu günlükleri: Yerine

{{#name_list}} 
    {{name}} 
{{/name_list}} 
<table class="table"><tbody><tr><td></td></tr></tbody></table> 

:

<table class="table"> 
        {{#name_list}} 
         <tr><td> {{name}} </td></tr> 
        {{/name_list}} 
    </table> 

Bu tarayıcı tarafından bazı biçimlendirme düzeltmesi nedeniyle etmek olabilir. HTML şablonlarını bir HTML sayfasında saklamak için diğer iyi püf noktaları nelerdir? Bu gibi

+0

Aynı dosyada saklanmamaları, ancak AJAX yoluyla yüklenmesi nedir? – feeela

+0

@feeela no, 2-3 küçük dizeleri yüklemek için ajax arama yapmak istemiyorum, aynı sayfada saklamak niyetindeyim. – DhruvPathak

+0

Backbone.js/underscore.js ile ilgili bazı öğreticilerde, şablonları etiketlerinde saklarlar. Bu soruya daha yakından bakın: http://stackoverflow.com/questions/4912586/explanation-of-script-type-text-template-script – Marc

cevap

16

bir senaryo etiketi saklayabilirsiniz, böylece işlenmiş alamadım:

<script id="abc-template" type="text/html"> 
    <h1>{{name}}</h1> 
</script> 

Daha sonra, bu gibi onları başvurabilirsiniz: <script> etiketleri kullanma

var template = $('#abc-template').html(); 
var html = Mustache.to_html(template, data); 
$('#abc-div').html(html); 
+0

Ha, saniyeler içinde aynı çözüm :) –

+0

FML beni kurtardı bütün gün. – Worthy7

6

inşaat büyük Bunun için:

Bu aslında bir drop-in yerine, onunile çalışacaktır

1

IDE'nize bağlı olarak, HTML sözdizimi vurgulamasını <script></script> blokları içinde alabilir veya almayabilirsiniz. Yaptığın bir div blok kullanın, ancak CSS

#templates {display: none;} 

ekleyin.

İlgili konular