【发布时间】:2014-08-10 03:25:49
【问题描述】:
我正在使用带有以下自定义 KnockoutJS 绑定的 Bootstrap 日期选择器,直到现在它对我来说都很好:
ko.bindingHandlers.datepicker = {
init: function(element, valueAccessor, allBindingsAccessor) {
//initialize datepicker with some optional options
var options = allBindingsAccessor().datepicker || {};
$(element).datepicker(options);
//when a user changes the date, update the view model
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("datepicker");
//when the view model is updated, update the widget
if (widget) {
widget.date = ko.utils.unwrapObservable(valueAccessor());
widget.setValue();
}
}
};
现在,我有一种情况,我在 datepicker 初始化发生之后 获得了 startDate 和 endDate 值。我在这里设置了一个示例:
日期选择器使用正确的日期初始化,但是当我点击“更改日期”按钮时,日期选择器没有更新,即使自定义绑定上的 update 函数被触发。
我尝试了 update 函数的不同版本,但没有成功:
update: function(element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().datepicker || {};
$(element).datepicker(options);
}
update: function(element, valueAccessor, allBindingsAccessor) {
$(element).datepicker('update');
}
唯一有效的是使用setStartDate 和setEndDate 方法,如下所示:
update: function(element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().datepicker || {};
$(element).datepicker('setStartDate', options.startDate);
$(element).datepicker('setEndDate', options.endDate);
}
但我正在寻找更好的方法。有没有办法使用update 函数用新值更新日期选择器,而不必指定要更新的选项?
【问题讨论】:
-
你在following 和answers 中看起来不太像interested...
-
我最近得到的答案不足以将它们标记为已接受。
-
也许您可以对它们发表评论以说明它们对您没有用处。感觉就像你问然后离开;它不会让人想帮忙
标签: javascript jquery knockout.js datepicker bootstrap-datepicker