2014-11-27 16 views
5

underscorejs 'templating işlevini kullanmak istiyorum. Bunun için bir AMAZING uygun olacağını HTML5 en <template> etiketi gibi görünüyor, ama bir engelle ... <% ve %> html-kaçan olsun underscorejs interpolasyon etiketleri (servisimiz var, HTML içinde bir şablon etiketi gibi pek görünür:jquery ve HTML5'in şablon etiketi

$('template.new-email').html() 

, o >

" 
    <div class="email"> 
    <div class="timestamp"> 
     &lt;%= received %&gt; 
    </div> 
    <div class="from"> 
     &lt;%= from %&gt; 
    </div> 
    <div class="title"> 
     &lt;%= title %&gt; 
    </div> 
    <div class="message"> 
     &lt;%= message %&gt; 
    </div> 
    </div> 
" 

Kuyusu berbat =.

Şimdi, bir hayali türü ile bir komut dosyası etiketi kullanırsak x-underscore-" gibi, çıkıyor gibi şablonlar", o zaman kıyak görünür:

$('.new-email').html() 

=>

" 
    <div class="email"> 
    <div class="timestamp"> 
     <%= received %> 
    </div> 
    <div class="from"> 
     <%= from %> 
    </div> 
    <div class="title"> 
     <%= title %> 
    </div> 
    <div class="message"> 
     <%= message %> 
    </div> 
    </div> 
" 

Benim soru - ı şablon etiketini kullanabilirsiniz? İhtiyacım olan karakterleri bir dizede nasıl elde edebilirim, böylece alt çizgiların şablonlama sistemine geçebilirim.

Not - Şu anda kullandığım sunucu, sunucu tarafındaki bir şablon sistemi olarak gidonları kullanan bir hapijs/node sunucusudur, sadece {{ve}} kullanamıyorum.

cevap

6

Ayrıca bir şablon etiketi kullanma fikrini de beğeniyorum ve alt şablonların html5 şablon öğesinde çeşitli şekillerde çalışmasını sağlamaya çalıştım. Ne yazık ki, template element özellikle bir html şablonu anlamına gelir ve içerik geçerli bir HTML'ye dönüşse bile birçok geçerli altçizgi şablonu için uygun olmayan bir belge parçasına dönüştürülür.

<template class="underscore-templates"> 
<script id="new-email"> 
    <div class="email"> 
    <div class="timestamp"> 
     <%= received %> 
    </div> 
    <div class="from"> 
     <%= from %> 
    </div> 
    <div class="title"> 
     <%= title %> 
    </div> 
    <div class="message"> 
     <%= message %> 
    </div> 
    </div> 
</script> 
<script id="other"> 
</script> 
</template> 

Sonra güvenle gibi şeyler yapmak ayrılmış gibidir::

var templates = $('.underscore-templates').prop('content'); 
_.template($(templates).children('#new-email').html(), {...}); 

Sonuç olarak, ben önerebilirsiniz tek kullanım yapmak, komut elemanları böylece gibi bir şablon öğesi içinde organize tutmak olduğunu

, kimlik çarpışmasıyla ilgili normal sorunları önlemek ve bu şablonları komut dosyaları olarak çalıştırmak için şablon görevi görür.

(Yine de bu (ya da belki) eğer eski tarayıcılarda içerik şablon öğelerini almak ve aranabilir parçası haline işleyebilen nasıl çok derinlemesine araştırma yapılmadan modern tarayıcılar ile sınırlı olacaktır.)