2012-04-13 8 views
5

मैं underscore template से mustache.js में बदलना चाहता हूं।अंडरस्कोर टेम्पलेट से mustache.js

mustache.js में चूंकि कोई if statements कैसे मैं आदेश mustache.js का उपयोग करने के कोड के इस टुकड़े को बदल सकते हैं देखते हैं?

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

मेरे समाधान है:

{{#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 या अधिक हो सकता है, लेकिन मैं पता नहीं क्या, शेष चर पर इसे ठीक करने के लिए सबसे अच्छा तरीका है जो 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

अपने बस एक नई templating ढांचे में जाने, मैं handlebars.js का उपयोग कर की सिफारिश करेंगे। यह अगर इस प्रकार के बयानों के लिए समर्थन हासिल है:

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

'Handlebars' प्रलेखन के अनुसार' statements' इस तरह से काम करता है: अपने तर्क, झूठी अपरिभाषित, अशक्त रिटर्न या तो [] (एक "falsy" मूल्य) , 'हैंडलबार्स' ब्लॉक प्रस्तुत नहीं करेगा। लेकिन यह मूंछ में '{{#total}}' और '{{^ कुल}} 'बनाने के बराबर है। – underscore666

संबंधित मुद्दे