2012-07-18 6 views
13

私はAJAXを介して受け取ったjsonデータをレンダリングするためにヒゲを使用しています。私は、通貨形式でこの番号をレンダリングするどのように私は口頭で小数から通貨形式にフォーマットできますか?

{{price}}

例:12300

私のようにそれをレンダリングすることができます方法:

ヒゲのテンプレートエンジンを使用して

"12,300"

+0

ローカリゼーションは気になりますか? (ロケールに応じて '、'または '。'を区切り記号として使用) – guival

答えて

1

モデルを口髭(または実際にはテンプレートエンジン)に渡す前にそれを行う必要があります。文字列操作を行うことは別として、すべての国が数字を同じように書いているわけではないので、表示の表現が異なり、テンプレートにハードコードされるべきではありません。

+5

一部の人は、iso書式設定は文化的でプレゼンテーションの問題であると主張します。 –

12

口ひげは非常に最小限であり、これをサポートしていません。

あなたはどちらかの形式のデータを供給する必要があるか

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

別の方法を形式のデータを返す関数は、ヘルパー関数

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

この

ように使用をサポートする handlebars.jsを使用することです
{{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> 

はJavaScript:

HTMLを結果として生じる
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);​ 

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

はここで検査するthe working jsFiddleと遊びますさらに。

0

私がインストール(および、必要に応じてパッケージに保存し、まずhttps://www.npmjs.com/package/handlebars.numeral

からハンドルバー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です。

関連する問題