2012-04-13 7 views
5

underscore templateからmustache.jsに変更したいと思います。アンダースコアテンプレートからmustache.js

mustache.jsにはif statementsがありませんmustache.jsを使用するにはどうすればこのコードを変更できますか?

{{#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以上であっても可能性があるため、それは、合計変数のために動作しますが、私は残りの変数にそれを修正するための最良の方法は何か見当がつかない、どの:私の解決策がある

<% 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> 
<% } %> 

1以上になる可能性があります。

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

それはそのようなものでなければなりません:

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

残りは1以上にすることが可能性があるため、それは動作しません。あなたはこのような何か作ることができ、あなたのビューで

答えて

3

:あなたは、単に新しいテンプレートフレームワークに移動する場合

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

を、私はhandlebars.jsを使用することをお勧めします。

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

をこのようにstatements'作品であれば、 'Handlebars'のドキュメント'によると:その引数は、偽未定義、nullまたは[](「falsy」値)を返した場合、次のようにこれは、if文をサポートしています'Handlebars'はブロックをレンダリングしません。しかしこれは、口ひげで '{{#total}}'と '{{^ total}} 'を作るのと同じです。 – underscore666

関連する問題