Функция Handlebars для форматирования валюты с помощью javascript

У меня есть это в моем шаблоне руля:

<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" ) цифр();.

Снова все работает в консоли, но не удается адаптироваться. Любые указатели очень приветствуются

Попробовал это с помощью 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

У вас есть пара простых вариантов.

Вы можете использовать плагин 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/