javascript - Fecha de formato en la plantilla Knockout
knockout.js knockout-2.0 (3)
Estoy queriendo formatear una fecha en la plantilla de knockout. La fecha se está devolviendo actualmente como
2013-07-04T00:00:00
Me gustaría que se muestre como
07/04/2013
Aquí está el enlace que estoy usando
<td data-bind="text: FirstDate">
¿Son sus propiedades de formato predeterminadas en la plantilla de Knockout?
Yo uso moment.js en una versión modificada del extensor de fechas de Stephen Redd . Se ve así, que es un poco más limpio que llamar a una función en un enlace de datos.
<input type="text" data-bind="value: dateOfBirth.formattedDate" />
No hay nada incorporado en relación con el formato de fecha o el formato en general en Knockout. El enlace de text
simplemente convierte el valor de la propiedad en una cadena, por lo que si desea formatearlo a la medida, debe hacerlo usted mismo.
Trabajar con fechas no es tan fácil en JavaScript, por lo que probablemente sea mejor utilizar una biblioteca de terceros como moment.js para esto. Es muy simple de usar y puede formatear sus fechas con el método de format
. Hay un formato incorporado ''L''
para su número de mes requerido, día del mes, año de formateo.
Puede usar moment js en su view-model o directamente en su enlace como:
<td data-bind="text: moment(FirstDate).format(''L'')">
O puede crear un controlador de enlace personalizado que encapsula esta lógica de formato.
Nota: asegúrese de usar ()
en su propiedad FirstDate
si es un ko.observable
dentro de su expresión de enlace de datos para obtener su valor.
También puedes usar MomentJs para crear un extensor:
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
});
}
viewmodel:
self.YourDate = ko.observable().extend({ date: true });