2012-04-13 16 views
5

underscore template'dan mustache.js'a değiştirmek istiyorum.alt şablondan mustache.js'ye dön

mustache.js içinde var mustache.js'u kullanmak için bu kod parçasını nasıl değiştirebilirim?

<% if (done) { %> 
<span class="todo-clear"> 
    <a href="#"> 
    Clear <span class="number-done"><%= done %></span> 
    completed <span class="word-done"><%= done === 1 ? 'item' : 'items' %></span> 
    </a> 
</span> 
<% } %> 

Benim çözüm:

{{#total}} 
     <span class="todo-count">{{ total }} 
      <span class="number">{{ remaining }}</span> 
      <span class="word"><%= remaining == 1 ? 'item' : 'items' %></span> left.--> 
     </span> 
      <span class="hint"> 
      Drag tasks from one list into another and vice versa. 
      </span> 
{{/total}} 

0 veya daha fazla olabilir, çünkü toplam değişken için çalışır, ancak ben, değişken kalan üzerinde bunu düzeltmek için en iyi yolu nedir hiçbir fikrim yok hangi 1 veya daha fazla olabilir.

<span class="word"><%= remaining == 1 ? 'item' : 'items' %></span> left.</span> 

Böyle bir şey olmalıdır:

<span class="word"> 
    {{#remaining}} 'items' {{/remaining}} 
    {{^remaining}} 'item' {{/remaining}} 
</span> 

kalan 1 veya daha fazla olabilir, çünkü çalışmaz. Size göre

cevap

3

böyle bir şey yapabilir: senin sadece yeni bir şablon çerçevesinde hareket ederse

Mustache.render(yourTemplate, { 
    remaining: items.length > 1 ? true : false 
} 
2

, ben handlebars.js kullanarak öneriyoruz. Bu ifadeleri aşağıdaki gibi eğer desteği vardır: `Handlebars` belgelerine göre

{{#if total}} 
    <span>something</span> 
{{else}} 
    <span>something else</span> 
{{/if}} 
+1

' statements' bu şekilde çalışırsa: onun argümanı, yanlış tanımsız, null döndürür veya varsa [] (bir "falsy" değeri) , 'Gidonlar 'bloğu oluşturmaz. Fakat bu, bıyıkta '{{#total}}' ve '{{^ total}}' yapmak için eşdeğerdir. – underscore666