Date Binding KO + moment.js + .net
by Alejandro Hernández
HTML
<script src="https://github.com/knockout/knockout/releases/download/v3.3.0/knockout-3.3.0.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.3.5/knockout.mapping.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.1/moment-with-locales.js"></script>
<div class="legible" data-bind="date : fechanet"></div>
<div data-bind="foreach: jsondata" data-locale="es">
<div data-bind="text: moment($data.fecha()).fromNow()"></div>
</div>
<div class="legible">
<pre data-bind="text: ko.mapping.toJSON($root, null, 2)"></pre>
</div>
fasdfa
CSS
.legible {
border: 1px solid brown;
padding: 2px;
margin-bottom: 2px;
margin-top: 10px;
}
JavaScript
moment.locale('es');
alert('fasdf');
ko.bindingHandlers.date = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
try {
var jsonDate = ko.utils.unwrapObservable(valueAccessor());
var value = moment(jsonDate).toDate();
var strDate = value.getMonth() + 1 + "/"
+ value.getDate() + "/"
+ value.getFullYear();
element.setAttribute('value', strDate);
alert('sd');
}
catch (exc) {
alert(exc);
}
$(element).change(function () {
var value = valueAccessor();
value(element.getAttribute('value'));
});
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var val = valueAccessor();
val(element.getAttribute('value'));
}
};
var vm = function () {
var self = this;
self.fechanet = ko.observable("\/Date(1425418530718)\/");
self.jsondata = ko.mapping.fromJSON('[{"fecha":"\/Date(1425418530718)\/"}]');
this.fullName = ko.pureComputed(function() {
return "";
}, this);
};
ko.applyBindings(new vm());