2012-07-18 13 views
13

मैं अजाक्स के माध्यम से प्राप्त जेसन डेटा प्रस्तुत करने के लिए मूंछ का उपयोग कर रहा हूं। मूंछें templating इंजन का उपयोग करमैं मूंछ में दशमलव प्रारूप में दशमलव प्रारूप कैसे बना सकता हूं?

"12,300"

:

{{price}}

जैसे:: 12300

मैं इसे कैसे के रूप में प्रदान कर सकते हैं

मैं मुद्रा प्रारूप में इस संख्या को रखना चाहते हैं ?

+0

क्या आप स्थानीयकरण की परवाह करते हैं? (लोकेल के आधार पर विभाजक के रूप में ',' या '।' का उपयोग करके) – guival

उत्तर

1

आपको अपने मॉडल को मूंछ में (या वास्तव में कोई टेम्पलेट इंजन) पास करने से पहले ऐसा करना चाहिए। स्ट्रिंग ऑपरेशन करने में सक्षम होने के अलावा, मुद्दा यह है कि सभी देश संख्याओं को समान रूप से प्रारूपित नहीं करते हैं, ताकि प्रदर्शन प्रतिनिधित्व भिन्न हो और टेम्पलेट में हार्डकोड नहीं किया जाना चाहिए।

+5

कुछ तर्क देंगे कि संख्याएं सार्वभौमिक हैं जबकि आईएसओ स्वरूपण एक सांस्कृतिक और प्रस्तुति समस्या –

12

मूंछ बहुत कम है और इसके लिए कोई समर्थन नहीं प्रदान करता है।

आप या तो स्वरूपित डेटा या स्वरूपित डेटा

{ priceDecimal: function() { return formatDecimal(this.price); } } 

एक अन्य विकल्प handlebars.js जो सहायक कार्यों

Handlebars.registerHelper('decimal', function(number) { 
    return formatDecimal(number); 
}); 

का समर्थन करता है का उपयोग करें और इस

की तरह उपयोग करने के लिए है फ़ंक्शन की आपूर्ति करने के लिए है
{{decimal price}} 
+1

हां है। Mustache.java के सदस्य ने सुझाव दिया कि एक अतिरिक्त प्रस्तुति/दृश्य मॉडल होना चाहिए। http://www.javarants.com/2013/03/09/mustache-is-logic-less-but-the-logic-has-to-go-somewhere/ –

7

जबकि मैंसे सहमत हूं, अपने डेटा को प्रारूपित करने के लिए function in Mustache का उपयोग करना संभव है।

सरल टेम्पलेट:

<ul> 
    {{#price}} 
     <li>{{commaFormat}}</li> 
    {{/price}} 
</ul> 

जावास्क्रिप्ट अपने मूल्यों के लिए एक स्वरूपण समारोह के साथ डेटा की प्रक्रिया करने के लिए:

var tpl = $('#tpl').html(), 
    data = { 
     price: ['1234', '123', '123456', '1234567890'], 
     commaFormat: function() { 
      // adapted from https://stackoverflow.com/questions/2901102/how-to-print-number-with-commas-as-thousands-separators-in-javascript 
      return this.replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
     } 
    }, 
    html = Mustache.to_html(tpl, data); 

document.write(html);​ 

परिणामस्वरूप HTML:

<ul> 
    <li>1,234</li> 
    <li>123</li> 
    <li>123,456</li> 
    <li>1,234,567,890</li> 
</ul> 

यहाँ the working jsFiddle निरीक्षण करने के लिए और खेलने के लिए है आगे के साथ।

4

मैंने Mustache.js के लिए एक छोटा सा एक्सटेंशन बनाया है जो अभिव्यक्तियों के अंदर स्वरूपकों के उपयोग को सक्षम बनाता है, जैसे {{expression | फ़ॉर्मेटर}}

आप GitHub में यह जांच कर सकते हैं: http://jvitela.github.io/mustache-wax/

0

मैं से https://www.npmjs.com/package/handlebars.numeral

पहले Handlebars NumeralHelper पैकेज का उपयोग, स्थापित (और वैकल्पिक अपने पैकेज पर सहेजें।json):

npm install --save handlebars.numeral 

इसके बाद, सहायक लोड:

var Handlebars = require('handlebars'); 
var NumeralHelper = require("handlebars.numeral"); 
NumeralHelper.registerHelpers(Handlebars); 

अंत में, यह अपने पृष्ठ में उपयोग करें:

<script> 
myNumber = 12300: 
</script> 

<div> 
{{ number myNumber }} 
</div> 

इस उदाहरण के लिए उत्पादन 12,300 है।

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