淘汰赛中的日期格式

时间:2014-01-09 14:40:58

标签: javascript knockout.js

大家好我已经使用moment.js

格式化了淘汰js中的日期

<div data-bind="text: moment(formatDate).format('DD-MMM-YY')"></div>

但是当date为null时,它显示为invalid date如何在此处显示空文本而不是invalid date

1 个答案:

答案 0 :(得分:3)

您可以在text

中使用表达式
<div data-bind="
    text: ko.unwrap(formatDate) ? moment(formatDate).format('DD-MMM-YY') : ''
"></div>

或使用extender

ko.extenders.formatDate = function(target, format) {
    var result = ko.computed({
        read: target,
        write: function(newValue) {
            var current = target(),
                valueToWrite = !newValue || isNaN(newValue) ? '' : moment(newValue).format(format);

            // only write if it changed
            if (valueToWrite !== current) {
                target(valueToWrite);
            } else {
                if (newValue !== current) {
                    target.notifySubscribers(valueToWrite);
                }
            }
        }
    }).extend({notify: 'always'});

    result(target());

    return result;
};

然后像这样使用它:

var someDateObservable = ko.observable();
var someDateObservableFormatted = someDateObservable.extend({
    formatDate: 'DD-MMM-YY'
});