我有一个网页,它有一个重复的部分视图,它被绑定到一个 Knockout 模板。在该视图中,我有一个日期选择器。该视图可以在单击按钮时添加任意次数。在第 1 节中选择日期,在第 2 节中设置日期选择器的 minDate,依此类推。每个部分都有自己的 Knockout 视图模型,它有一个 minDate 可观察的。附加到这个 observable,我有一个带有更新处理程序的自定义绑定 - 当添加或更新部分时,我使用它来更新元素的 minDate。
我的代码工作到可以更新任何部分中日期选择器的值的程度,并且下一部分将正确更新其 minDate。这是我的自定义绑定的代码:
ko.bindingHandlers.minDate = {
update: function (element, valueAccessor, allBindings, viewModel) {
var value = valueAccessor();
var valueUnwrapped = ko.unwrap(value);
var oneDay = 1000 * 60 * 60 * 24;
var diff = Math.ceil((new Date(valueUnwrapped) - new Date()) / oneDay);
$(element).datepicker('option', 'minDate', diff + 1);
}
};
我的问题是,如果我有选择日期的现有部分,然后单击添加新部分,我可以看到我新添加的视图模型的 minDate 设置正确,但是我新添加的 datepicker 上没有设置 minDate元素。
如果我单步执行我的脚本代码,我能看到的唯一区别是,即使在我中断执行的那一刻,我的部分视图已经被渲染,并且我的 $(element) 确实是一个对象,但它没有 ID 属性。这是我可以看到的工作代码和非工作代码之间的唯一区别。
任何人都可以将此视为我在动态添加的元素上设置 minDate 问题的可能原因吗?