Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui Datetimepicker的慢度_Jquery Ui_Knockout.js - Fatal编程技术网

Jquery ui Datetimepicker的慢度

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

我想征求你的意见。 在一个页面上,我有许多jQueryUI日期选择器。当用户单击按钮时,它们在引导模式中可见。 不幸的是,这个页面的加载速度非常慢(尤其是在IE8中)。我知道IE8中的datepicker会导致速度变慢,但有时我收到的脚本会停止工作

这是我的datetimepicker,就像定制的BindingHandler一样

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