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

jah*_*hie 11 javascript jquery string-formatting handlebars.js

我在车把模板中有这个:

<span class="currencyFormatMe">{{_current_price}}</span>
Run Code Online (Sandbox Code Playgroud)

循环返回的示例:出价:$ 24000

我想用逗号来格式化,但我失败了.

我有这个功能在控制台中工作,但在使用把手适应代码库时失败.

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

我把它称为$("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,") ); 
        })
    }
);
Run Code Online (Sandbox Code Playgroud)

呼叫:

{{formatCurrency _current_price}}
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 21

这里有几个简单的选项.

您可以坚持使用jQuery插件并在填充Handlebars模板后应用它; 这样的事情:

<script id="t" type="text/x-handlebars">
    <span class="currencyFormatMe">{{_current_price}}</span>
</script>
Run Code Online (Sandbox Code Playgroud)

然后:

$.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();
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/ambiguous/732uN/

或者,您可以将插件转换为Handlebars助手,并在模板中进行格式化.如果你想这样做,你只需要格式化传递给助手的值,而不是$(this)在助手内部搞乱.例如:

<script id="t" type="text/x-handlebars">
    {{formatCurrency _current_price}}
</script>
Run Code Online (Sandbox Code Playgroud)

然后:

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
});
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/ambiguous/5b6vh/