13

我想在淘汰赛的模板中格式化日期。日期当前返回为

2013-07-04T00:00:00

我希望它显示为

07/04/2013

这是我正在使用的绑定

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

它们是 Knockout 模板中的默认格式属性吗?

4

3 回答 3

29

在 Knockout 中没有内置关于日期格式或一般格式的任何内容。绑定只是将text属性值转换为字符串,所以如果你想要自定义格式,你需要自己做。

在 JavaScript 中处理日期并不容易,因此您最好使用像moment.js这样的第三方库。它使用起来非常简单,并且可以使用该format方法格式化您的日期。'L'您需要的月份数字、月份日期、年份格式都有内置格式。

您可以在视图模型中或直接在绑定中使用 moment js,例如:

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

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

注意:如果它是数据绑定表达式内部的属性,请确保()在您的属性上使用以获取其值。FirstDateko.observable

于 2013-07-03T19:05:49.640 回答
2

我在Stephen Redd 的日期扩展器的修改版本中使用了 moment.js 。它看起来像这样,这比在数据绑定中调用函数要干净一些。

<input type="text" data-bind="value: dateOfBirth.formattedDate" />
于 2013-07-07T22:19:06.590 回答
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/

于 2017-05-09T19:07:59.803 回答