Подтвердить что ты не робот

Как я могу форматировать десятичный формат валюты в усах?

Я использую усы для рендеринга json-данных, полученных через Ajax.

Я хочу отобразить это число в формате валюты:

{{price}}

например: 12300

Как я могу сделать это как:

"12,300"

с использованием механизма моделирования усов?

4b9b3361

Ответ 1

Усы очень минималистичны и не поддерживают никакой поддержки.

Вам либо нужно предоставить отформатированные данные, либо функцию, возвращающую отформатированные данные

{ priceDecimal: function () { return formatDecimal(this.price); } }

Другой альтернативой является использование handlebars.js, который поддерживает вспомогательные функции

Handlebars.registerHelper('decimal', function(number) {
  return formatDecimal(number);
});

и используйте его так:

{{decimal price}}

Ответ 2

Пока я согласен с ответом Lucero, можно использовать функцию в Mustache для форматирования ваших данных.

Простой шаблон:

<ul>
    {{#price}}
        <li>{{commaFormat}}</li>
    {{/price}}
</ul>

JavaScript для обработки данных с помощью функции форматирования по вашим ценам:

var tpl = $('#tpl').html(),
    data = {
        price: ['1234', '123', '123456', '1234567890'],
        commaFormat: function() {
            // adapted from https://stackoverflow.com/questions/2901102/how-to-print-number-with-commas-as-thousands-separators-in-javascript
            return this.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        }
    },
    html = Mustache.to_html(tpl, data);

document.write(html);​

Результат HTML:

<ul>
    <li>1,234</li>
    <li>123</li>
    <li>123,456</li>
    <li>1,234,567,890</li>
</ul>

Здесь рабочий jsFiddle для дальнейшего просмотра и воспроизведения.

Ответ 3

Я создал небольшое расширение для Mustache.js, которое позволяет использовать formatters внутри выражений, например {{expression | форматировщик}}

Вы можете проверить это в github: http://jvitela.github.io/mustache-wax/

Ответ 4

Вы должны сделать это, прежде чем передавать свою модель на усы (или на любой механизм шаблонов). Помимо возможности выполнить операцию stringd, проблема заключается в том, что не все страны форматируют номера одинаково, так что отображаемое представление может отличаться и не должно быть жестко закодировано в шаблоне.

Ответ 5

Я использую пакет Handelbars NumeralHelper из https://www.npmjs.com/package/handlebars.numeral

Сначала установите (и, возможно, сохраните его на свой пакет .json):

npm install --save handlebars.numeral

Затем загрузите помощника:

var Handlebars = require('handlebars');
var NumeralHelper = require("handlebars.numeral");
NumeralHelper.registerHelpers(Handlebars);

Наконец, используйте его на своей странице:

<script>
myNumber = 12300:
</script>

 <div>
 {{ number myNumber }}
 </div>

Вывод для этого примера - 12,300.