【问题标题】:Knockoutjs and JQuery datepicker. Element looses datepicker after re-renderKnockoutjs 和 JQuery 日期选择器。重新渲染后元素丢失日期选择器
【发布时间】:2013-06-10 03:08:30
【问题描述】:

当我尝试使用 id 为“eventStartDate”的输入时,在它被隐藏并再次可见后 - 它会丢失日期选择器:

<!-- ko 'if': isEvent.forEditing -->
    <div class="editor-field">
        <div class="editor-label">Початок події: </div>
        <input type="datetime" name="eventStartDate" id="eventStartDate" />
        @Html.ValidationMessageFor(model => model.eventStartDate)
    </div>
<!-- /ko -->

有人可以告诉我如何在重新渲染后强制 $("#eventStartDate").datepicker() 初始化这个对象吗?

谢谢。

UPD:我知道它必须以某种方式通过自定义绑定来完成,但是有人可以帮我弄清楚,到底是怎么回事?..

【问题讨论】:

    标签: knockout.js jquery-ui-datepicker


    【解决方案1】:

    最好的办法是考虑使用custom binding,就像这个答案中的那个:knockoutjs databind with jquery-ui datepicker 或这个答案:jQuery UI datepicker change event not caught by KnockoutJS

    如果您不需要双向数据绑定,那么最简单的自定义绑定就是:

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

    【讨论】:

    • 非常感谢! :) 这样可行。我会尝试更多地研究自定义绑定。
    猜你喜欢
    • 2012-09-11
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 2014-04-22
    相关资源
    最近更新 更多