11

ハンドルバーテンプレートにこれがあります:

<span class="currencyFormatMe">{{_current_price}}</span>

ループが返すものの例|:入札:$ 24000

カンマでフォーマットしたいのですが、失敗します。

コンソールで動作するこの関数がありますが、ハンドルバーを使用してコードベースに適合させると失敗します。

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

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

繰り返しますが、それはすべてコンソールで機能しますが、適応すると失敗します。どんなポインタでも大歓迎です

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

1 に答える 1

23

ここにはいくつかの簡単なオプションがあります。

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/

于 2013-01-24T03:40:07.963 に答える