在dust.js中格式化数字和日期(linkedin-fork)

时间:2013-04-03 08:27:10

标签: javascript dust.js client-side-templating

如何在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)}

3 个答案:

答案 0 :(得分: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);
};

您可能希望在该片段中添加以在月份或日期之前获得前导零。

答案 1 :(得分:3)

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

https://github.com/lmarkus/Kraken_Example_Date_Format_Helper

它使用Moment.js来避免在日期格式化时重新发明轮子。

答案 2 :(得分:1)

您可以编写过滤器以使用时刻。像这样......     dust.filters.formatDate =(value)=&gt; moment.utc(value).format('l H:mm'); 脚本中的适当位置。 然后在你的HTML中,只是把|除了你的价值:     {日期| formatDate}