我想在淘汰赛模板中格式化日期。 该日期目前正在返回
2013-07-04T00:00:00
我希望它显示为
07/04/2013
这是我正在使用的绑定
<td data-bind="text: FirstDate">
他们在Knockout模板中的默认格式属性是什么?
答案 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 });