Jquery ui Datetimepicker的慢度
我想征求你的意见。 在一个页面上,我有许多jQueryUI日期选择器。当用户单击按钮时,它们在引导模式中可见。 不幸的是,这个页面的加载速度非常慢(尤其是在IE8中)。我知道IE8中的datepicker会导致速度变慢,但有时我收到的脚本会停止工作 这是我的datetimepicker,就像定制的BindingHandler一样Jquery ui Datetimepicker的慢度,jquery-ui,knockout.js,Jquery Ui,Knockout.js,我想征求你的意见。 在一个页面上,我有许多jQueryUI日期选择器。当用户单击按钮时,它们在引导模式中可见。 不幸的是,这个页面的加载速度非常慢(尤其是在IE8中)。我知道IE8中的datepicker会导致速度变慢,但有时我收到的脚本会停止工作 这是我的datetimepicker,就像定制的BindingHandler一样 ko.bindingHandlers.datetimepicker = { init: function (element, valueAccessor, al
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行时,没有慢,但我的日期选择器也不可见
当用户单击按钮查看模式时,我可以调用日期选择器的绑定吗?这样,在页面加载期间,datepicker的绑定就不会被初始化?
如果我将jQuery UI日期选择器更改为bootstrap datepicker,那么性能会有一些变化?您可能会“延迟”初始化日期选择器。例如,要使用现有的datepicker
绑定,可以创建lazyDatepicker
绑定
比如:
ko.bindingHandlers.lazyDatepicker = {
init: function(element, valueAccessor, allBindingsAccessor) {
//keep the field's value in sync until the datepicker binding has been initialized
var updater = ko.computed(function() {
var options = ko.unwrap(allBindingsAccessor()),
value = $.datepicker.formatDate(options.dateFormat || "mm/dd/yy", ko.unwrap(valueAccessor()));
$(element).val(value);
});
//use "one" so this only fires a single time on initial focus
$(element).one("focus", function() {
//binding will now keep value in sync
updater.dispose();
//apply the actual datepicker
ko.applyBindingAccessorsToNode(element, {
datepicker: valueAccessor,
datepickerOptions: function() { return allBindingsAccessor.get("datepickerOptions"); }
})
});
}
};
实际上,当字段被聚焦时,这只应用了datepicker
绑定。我还在其中添加了一些逻辑,以使字段与模型保持最新,直到datepicker被实际初始化(更新程序被计算)
这里有一个问题:是的,lazyDatepicker绑定确实有帮助。不幸的是,如果我将更改为(以这种方式,datepicker始终可见,而不仅仅是在单击时),则什么都没有,并且我看不到datepicker