【发布时间】:2014-04-10 11:29:46
【问题描述】:
我想请教您的意见。 在一页上,我有许多 jQuery UI datepicker`s。当用户单击按钮时,它们在 Bootstrap Modal 中可见。 不幸的是,这个页面加载速度很慢(尤其是在 IE8 中)。我知道 IE8 中的 datepicker 会导致运行缓慢,但有时我会收到该脚本停止工作。
这是我在 Knockout 中的日期时间选择器,就像一个自定义 bindingHandlers
ko.bindingHandlers.datetimepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
//initialize datepicker with some optional options
var options = allBindingsAccessor().datetimepickerOptions || {};
$(element).datetimepicker(options);//Line 5
//handle the field changing
ko.utils.registerEventHandler(element, "change", function () {
var observable = valueAccessor();
observable($(element).datetimepicker("getDate"));
});
//handle disposal (if KO removes by the template binding)
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$(element).datetimepicker("destroy");
});
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()),
current = $(element).datetimepicker("getDate");
if (value - current !== 0) {
// LINE 23 $(element).datetimepicker("setDate", value);
}
}
};
我评论第 23 行是因为之前我遇到了同样的性能问题。但后来我有了这样的选择器
<input data-bind="datetimepicker: date,datepickerOptions: { minDate: new Date() }"/>
当我评论它时,一切都很好。
现在我更改了 do(因为我希望在显示模式时有可见的日期选择器)并且我遇到了同样的问题。 当我评论第 5 行时,没有缓慢,但我的日期选择器也不可见。
当用户点击按钮查看 Modal 时,我可以调用 datepicker 的绑定吗?这样在页面加载期间不会初始化日期选择器的绑定? 如果我把jQuery UI datepicker改成bootstrap datepicker,性能会有一些变化吗?
【问题讨论】:
标签: jquery-ui knockout.js