6

如何在dust.js 模板中格式化数字、货币或日期值?

数据:

{
today: 'Wed Apr 03 2013 10:23:34 GMT+0200 (CEST)'
}

模板:

<p>Today: {today} </p>

像这样:(使用moment.js)

<p>Today: {moment(today).format('dd.MM.YYYY')}</p>

或四舍五入一些价格价值*

数据:{价格:56.23423425}

模板:

价格:{price.toFixed(2)}

4

3 回答 3

8

您可能需要编写一个助手。可以在此处找到有关如何编写帮助程序的详细信息:

您的日期字符串模板如下所示:

<p>Today: {@formatDate value="{today}"/}</p>

您的助手将是这样的:

dust.helpers.formatDate = function (chunk, context, bodies, params) {
    var value = dust.helpers.tap(params.value, chunk, context),
        timestamp,
        month,
        date,
        year;

    timestamp = new Date(value);
    month = timestamp.getMonth() + 1;
    date = timestamp.getDate();
    year = timestamp.getFullYear();

    return chunk.write(date + '.' + month + '.' + year);
};

您还需要添加该部分以在月份或日期前面获得前导零。

于 2013-04-05T22:06:55.380 回答
3

对于需要为 nodeJs 应用程序执行此操作的人,这是一个不错的 KrakenJS 示例:

https://github.com/lmarkus/Kraken_Example_Date_Format_Helper

它使用 Moment.js 来避免重新发明日期格式。

于 2014-01-06T07:20:56.020 回答
1

您可以编写一个过滤器来使用时刻。像这样说:dust.filters.formatDate = (value) => moment.utc(value).format('l H:mm'); 在你的脚本中合适的地方。然后在您的 html 中,只需输入 | 除了你的价值:{date|formatDate}

于 2017-02-23T02:50:06.173 回答