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());