在Knockout模板中格式化日期

时间:2013-07-03 18:42:06

标签: javascript knockout.js knockout-2.0

我想在淘汰赛模板中格式化日期。 该日期目前正在返回

2013-07-04T00:00:00

我希望它显示为

07/04/2013

这是我正在使用的绑定

<td data-bind="text: FirstDate">

他们在Knockout模板中的默认格式属性是什么?

3 个答案:

答案 0 :(得分:28)

Knockout中一般没有内置日期格式或格式。 text绑定只是将属性值转换为字符串,因此如果您想要自定义格式,则需要自己完成。

在JavaScript中使用日期并不是那么容易,因此您可能更好地使用像moment.js这样的第三方库。它使用起来非常简单,它可以使用format method格式化您的日期。内置格式'L'表示您所需的月份数字,日期,年份格式。

您可以在视图模型中使用时刻js,也可以直接在绑定中使用:

<td data-bind="text: moment(FirstDate).format('L')">

或者您可以创建一个自定义绑定处理程序来封装此格式化逻辑。

注意:如果数据绑定表达式中有(),请确保在FirstDate属性上使用ko.observable以获取其值。

答案 1 :(得分:2)

我在Stephen Redd's date extender的修改版本中使用moment.js。 它看起来像这样,比在数据绑定中调用函数要简洁一些。

<input type="text" data-bind="value: dateOfBirth.formattedDate" />

答案 2 :(得分:0)

您还可以使用MomentJs创建扩展器:

ko.extenders.date = function (target, format) {
    return ko.computed({
        read: function () {
            var value = target();
            if (typeof value === "string") {
                value = new Date(value);
            }

            return moment(value).format("LL");
        },
        write: target
    });
}

视图模型:

self.YourDate = ko.observable().extend({ date: true });

http://momentjs.com/docs/#/displaying/format/