Last active
September 6, 2017 10:20
-
-
Save tommck/6174395 to your computer and use it in GitHub Desktop.
a knockout binding handler for date formatting with momentjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* read-only date display with momentjs | |
* use like this: data-bind="moment: dateVar, format: 'YYYY-MM-DD'" | |
* The "format" is optional and will default to "MM/DD/YYYY" | |
*/ | |
ko.bindingHandlers.moment = { | |
update: function (element, valueAccessor, allBindingsAccessor, viewModel) { | |
var val = valueAccessor(); | |
var formatted = '**INVALID**'; // throw instead? | |
var date = moment(ko.utils.unwrapObservable(val)); | |
var format = allBindingsAccessor().format || 'MM/DD/YYYY'; | |
if (date && date.isValid()) { | |
formatted = date.format(format); | |
} | |
element.innerText = formatted; | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks @codethug, I added your change and also added checking for valid date formats. For now, I just return "** INVALID **", but when I think about it more, I'll figure out what I need to do for better error handling.