Я испробовал все возможности, с которыми я могу столкнуться, но средство выбора даты не запускает обновление для моей модели представления.В поисках я мог бы собрать следующее:
ko.bindingHandlers.datepicker = {
init: function (element, valueAccessor, allBindings) {
//initialize datepicker with some optional options
var options = allBindings.get('options') || {
format: 'DD MMMM YYYY',
defaultDate: valueAccessor()()
};
$(element).datetimepicker(options);
ko.utils.registerEventHandler(element, "changeDate", function (event)
{
var value = valueAccessor();
if (ko.isObservable(value)) {
value(event.date);
}
});
},
update: function (element, valueAccessor) {
var widget = $(element).data("DateTimePicker");
var value = ko.unwrap(valueAccessor()); //I can see the initial value when page first load
if (widget) {
widget.date = value;
if (widget.date) {
$(element).datetimepicker({
date: value
});
}
}
}
};
var viewModel = ko.mapping.fromJS(data, mapping);
// continue with some tweaking
// DateOfThing comes from c# DateTime type
// on console window
// ko.isObservable(viewModel.DateOfThing) // = true
vm.DateOfThing.subscribe(function(){
// never fires
}
привязка:
<input asp-for="DateOfThing" class="form-control" type="text" data-bind="datepicker: DateOfThing" />
Я вижу, как вызывается обработчик при первой загрузке страницы, но пользовательский интерфейс не обновляется.После этого я могу выбрать дату, но обновляется только пользовательский интерфейс.Я испробовал все возможности, которые могу встретить, но безуспешно.