javascript knockout.js knockout-2.0

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 });

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