Bind bootstrap datepicker с нокаутом

Я хочу использовать bootstrap datepicker и привязать выбранную дату с помощью knockoutjs.

функция, использующая datepicker:

$(function() {

    // create the departure date
    $('#depart-date').datepicker({
        autoclose: true,
        format: 'yyyy/mm/dd',
    }).on('changeDate', function(ev) {
        ConfigureReturnDate();
    });


    $('#return-date').datepicker({
        autoclose: true,
        format: 'yyyy/mm/dd',
        startDate: $('#depart-date').val()
    });

    // Set the min date on page load
    ConfigureReturnDate();

    // Resets the min date of the return date
    function ConfigureReturnDate() {
        $('#return-date').datepicker('setStartDate', $('#depart-date').val());
    }

});

Вот скрипка, которую я хочу использовать, но не знаю, как это сделать. http://jsfiddle.net/zNbUT/276/

Ответ 1

Я нашел скрипку, которая поможет мне http://jsfiddle.net/jearles/HLVfA/6/

Функциональность скрипта:

  ko.bindingHandlers.datepicker = {
        init: function (element, valueAccessor, allBindingsAccessor) {
            //initialize datepicker with some optional options
            var options = allBindingsAccessor().datepickerOptions || {};
            $(element).datepicker(options).on("changeDate", function (ev) {
                var observable = valueAccessor();
                observable(ev.date);
            });
        },
        update: function (element, valueAccessor) {
            var value = ko.utils.unwrapObservable(valueAccessor());
            $(element).datepicker("setValue", value);
        }
    };

Ответ 2

Я также использовал bootstrap-datepicker.js, но по-другому:

Моя модель просмотра:

 var MyDataViewModel = {
     //Set Todays Date
     StartDate: ko.observable(new Date())
 }

Мой HTML:

<div id="dtpDate" class="input-append">
    <input required="required" id="txtdtpDate" data-format="yyyy-MM-dd" type="text" style="width: 75%;" />
    <span class="add-on"><i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>
    </span>
</div>

И JS, чтобы заставить его функционировать:

$(function () {
    $('#dtpDate').datetimepicker({
        pickTime: false
        })
        .on('changeDate', function (ev) {
            //Date.Subtring(1,10) for formatting purposes
            MyDataViewModel.StartDate(ko.toJSON(ev.date).substr(1, 10));
        });
    });
});

И это отлично работает для меня