我想在淘汰赛的模板中格式化日期。日期当前返回为
2013-07-04T00:00:00
我希望它显示为
07/04/2013
这是我正在使用的绑定
<td data-bind="text: FirstDate">
它们是 Knockout 模板中的默认格式属性吗?
我想在淘汰赛的模板中格式化日期。日期当前返回为
2013-07-04T00:00:00
我希望它显示为
07/04/2013
这是我正在使用的绑定
<td data-bind="text: FirstDate">
它们是 Knockout 模板中的默认格式属性吗?
在 Knockout 中没有内置关于日期格式或一般格式的任何内容。绑定只是将text
属性值转换为字符串,所以如果你想要自定义格式,你需要自己做。
在 JavaScript 中处理日期并不容易,因此您最好使用像moment.js这样的第三方库。它使用起来非常简单,并且可以使用该format
方法格式化您的日期。'L'
您需要的月份数字、月份日期、年份格式都有内置格式。
您可以在视图模型中或直接在绑定中使用 moment js,例如:
<td data-bind="text: moment(FirstDate).format('L')">
或者,您可以创建一个封装此格式化逻辑的自定义绑定处理程序。
注意:如果它是数据绑定表达式内部的属性,请确保()
在您的属性上使用以获取其值。FirstDate
ko.observable
我在Stephen Redd 的日期扩展器的修改版本中使用了 moment.js 。它看起来像这样,这比在数据绑定中调用函数要干净一些。
<input type="text" data-bind="value: dateOfBirth.formattedDate" />
您还可以使用 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 });