【发布时间】:2018-09-20 00:24:03
【问题描述】:
我尝试了所有我能遇到的可能性,但日期选择器没有在我的视图模型上触发更新。环顾四周,我可以整理出以下内容:
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" />
我可以看到第一次加载页面时调用了处理程序,但 UI 没有更新。之后我可以选择一个日期,但只有 UI 会更新。我已经尝试了所有我能遇到的可能性,但没有成功。
【问题讨论】:
标签: knockout.js event-handling bootstrap-datetimepicker