把手用于使用javascript格式化货币

时间:2013-01-24 00:51:07

标签: javascript jquery string-formatting handlebars.js

我在车把模板中有这个:

<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,") ); 
    })
}

我称之为     $(&#34; span.currencyFormatMe&#34)的数字();

同样,它全部在控制台中运行,但在适应时失败。任何指针都非常受欢迎

尝试使用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}}

1 个答案:

答案 0 :(得分:21)

这里有几个简单的选项。

您可以坚持使用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/

或者您可以将插件转换为Handlebars助手,并在模板中进行格式化。如果你想这样做,你只需要格式化传递给助手的值,而不是在助手内部弄乱$(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/