Knockout binding formatters for date and currency
Dependency
- Requires Knockout
- jQuery (for setting text())
- ASP.NET (for the formatting functions).
ko.bindingHandlers.date = {
update: function(element, valueAccessor, allBindingsAccessor) {
var value = valueAccessor(), allBindings = allBindingsAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
var d = "";
if (valueUnwrapped) {
var m = /Date\([\d+-]+\)/gi.exec(valueUnwrapped);
if (m) {
d = String.format("{0:dd/MM/yyyy}", eval("new " + m[0]));
}
}
$(element).text(d);
}
};
ko.bindingHandlers.money = {
update: function(element, valueAccessor, allBindingsAccessor) {
var value = valueAccessor(), allBindings = allBindingsAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
var m = "";
if (valueUnwrapped) {
m = parseInt(valueUnwrapped);
if (m) {
m = String.format("{0:n0}", m);
}
}
$(element).text(m);
}
};
Usage:
- data-bind="money: myMoney"
- data-bind="date: myDate"
Note:
Dates are converted from ASP.NET's date format: \/Date(1000+1000)\/