Форматиране на дата в изтрит шаблон

Искам да форматирам дата в шаблона на нокаут. Датата в момента се връща като

2013-07-04T00:00:00

Бих искал да се показва като

07/04/2013

Ето обвързването, което използвам

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

Техните свойства за форматиране по подразбиране в шаблона на Knockout ли са?


person rross    schedule 03.07.2013    source източник
comment
Няма нищо вградено в Knockout по отношение на форматирането на датата или форматирането като цяло. Трябва да използвате библиотека на трета страна като moment.js за това.   -  person nemesv    schedule 03.07.2013
comment
Благодаря, @nemesv, включих moment.js. ‹td data-bind=text: moment(FirstDate).format('L')›. Прави точно това, което исках.   -  person rross    schedule 03.07.2013


Отговори (3)


Няма нищо вградено по отношение на форматирането на датата или форматирането като цяло в Knockout. Свързването text просто преобразува стойността на свойството в низ, така че ако искате персонализирано форматиране, трябва да го направите сами.

Работата с дати не е толкова лесна в JavaScript, така че вероятно е по-добре да използвате библиотека на трета страна като moment.js за това . Той е много лесен за използване и може да форматира вашите дати с format метода. Има вграден формат 'L' за необходимото от вас форматиране на числовия месец, ден от месеца, година.

Можете да използвате момент js във вашия изглед-модел или директно във вашето обвързване като:

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

Или можете да създадете персонализиран манипулатор на обвързване, който капсулира тази логика на форматиране.

Забележка: Уверете се, че използвате () във вашето свойство FirstDate, ако то е ko.observable във вашия израз за обвързване на данни, за да получите неговата стойност.

person nemesv    schedule 03.07.2013
comment
@lola наличните опции за формат са изброени в документацията на moment.js: momentjs.com/docs/ #/displaying/format - person nemesv; 24.11.2016

Използвам moment.js в модифицирана версия на Удължителят на Стивън Ред. Изглежда така, което е малко по-чисто от извикването на функция в обвързване на данни.

<input type="text" data-bind="value: dateOfBirth.formattedDate" />
person Corey Cole    schedule 07.07.2013

Можете също да използвате 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/

person Mason240    schedule 09.05.2017