2013-01-24 8 views
10

で通貨をフォーマットする機能|:入札:$ 24000ハンドルバーは、私は私のハンドルテンプレートでこれを持っているJavaScriptの

私はそれをフォーマットしたいのですがコンマで私は失敗している。

私はこの機能をコンソールでは動作しますが、ハンドルバーを持つコードベースに適合させると失敗します。

$.fn.digits = function(){ 
    return this.each(function(){ 
     $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
    }) 
} 

そして、私は $( "span.currencyFormatMe")のようにそれを呼び出す桁();

この場合も、すべてがコンソールで動作しますが、適合すると失敗します。任意のポインタは非常に歓迎されている

はregisterhelperでそれを試してみました:

Handlebars.registerHelper('formatCurrency', 
    $.fn.digits = function(){ 
     return this.each(function(){ 
      $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
     }) 
    } 
); 

はコール:

{{formatCurrency _current_price}} 
+0

あなたはヘルパーで私の試みを反映するために、上記のコードを更新registerHelper – epascarello

+0

@epascarelloを使用すべきではありません。..まだ運がない。何か目立つ? – jahrichie

答えて

18

をあなたがここにカップルシンプルなオプションがあります。

jQueryプラグインを使用して、Handlebarsテンプレートが入力された後に適用することができます。このような何か:その後、

<script id="t" type="text/x-handlebars"> 
    <span class="currencyFormatMe">{{_current_price}}</span> 
</script> 

と:

$.fn.digits = function(){ 
    return this.each(function(){ 
     $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
    }) 
}; 

var t = Handlebars.compile($('#t').html()); 
var h = t({ 
    _current_price: 1000 
}); 
$('<div>').append(h).find('.currencyFormatMe').digits(); 

デモ:http://jsfiddle.net/ambiguous/732uN/

それとも、ハンドルバーヘルパーにあなたのプラグインを変換し、テンプレートで書式設定を行うことができます。これを行うには、ヘルパーの内部に$(this)をつまむのではなく、ヘルパーに渡された値を書式設定するだけです。たとえば、次のように

<script id="t" type="text/x-handlebars"> 
    {{formatCurrency _current_price}} 
</script> 

、その後:

Handlebars.registerHelper('formatCurrency', function(value) { 
    return value.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); 
}); 

var t = Handlebars.compile($('#t').html()); 
var h = t({ 
    _current_price: 1000 
}); 

デモ:http://jsfiddle.net/ambiguous/5b6vh/

+0

ご登録いただきありがとうございます。 – jahrichie

+0

上記のおかげで、それは$ 24000.50のために例えば入札として扱いません。その部分に関する助言? – Tai

+0

@TaiHilbayashiあなたは '.50'部分を意味しますか?おそらく、 'prinft' JavaScriptライブラリを探して、それをHandlebarsヘルパーで囲むのが最良でしょう。 –

関連する問題