jquery-ui - knockoutjs 数据绑定(bind)与 jquery-ui datepicker

标签 jquery-ui knockout.js

我正在使用 jQuery UI日期选择器。它后面的 HTML 输入字段当前连接到 KnockoutJS作为 dependentObservable,但是当在 View 模型中设置其值时,日期选择器会丢失其格式。

我应该如何做才能不丢失格式?我希望 viewModel 不知道它是 jQuery日期选择器。

最佳答案

您可以编写一个自定义绑定(bind),使用日期选择器 API 在字段中设置日期,并通过正确读取日期来设置可观察值的值。

自定义绑定(bind)可能如下所示:

ko.bindingHandlers.datepicker = {
    init: function(element, valueAccessor, allBindingsAccessor) {
        var options = allBindingsAccessor().datepickerOptions || {},
            $el = $(element);

        //initialize datepicker with some optional options
        $el.datepicker(options);

        //handle the field changing
        ko.utils.registerEventHandler(element, "change", function() {
            var observable = valueAccessor();
            observable($el.datepicker("getDate"));
        });

        //handle disposal (if KO removes by the template binding)
        ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
            $el.datepicker("destroy");
        });

    },
    update: function(element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor()),
            $el = $(element),
            current = $el.datepicker("getDate");

        if (value - current !== 0) {
            $el.datepicker("setDate", value);   
        }
    }
};

你会这样使用它:

<input data-bind="datepicker: myDate, datepickerOptions: { minDate: new Date() }" />

datepickeroptions 是可选的,可以包含您想要传递到 datepicker() 调用中的任何内容。

此外,这假设您正在使用可观察的日期。如果您想与不可观察的对象进行单向绑定(bind),则绑定(bind)必须做更多的工作,但这不太可能。

示例:http://jsfiddle.net/rniemeyer/NAgNV/

关于jquery-ui - knockoutjs 数据绑定(bind)与 jquery-ui datepicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6399078/

相关文章:

javascript - 使用 javascript 和 jquery ui 单击事件的 css

javascript - 具有动态宽度的元素的动态数量,直到两行被填充

javascript - 如何在knockout js组件中添加twitter关注按钮?

c# - 在 .getJSON 中传递数据。可能的?如何?

php - 在 wordpress 中替换排队脚本的正确方法?

javascript - 如何序列化与 jQueryUI 可排序列表的当前项相关的数据?

javascript - KnockoutJS observableArray 未初始化

javascript - 带有 Knockout JS 的文智信 Bootstrap-table

javascript - 是否可以同时运行 jQueryUI 和 Mootools?

javascript - AJAX responseXML 为空,带有 jQ​​uery UI 模态表单