knockout.js 在IE 8中无法以编程方式更新Webshim日期

rsaldnfx  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(139)

我正在使用带有Knockout绑定的HTML <input type="date">。我正在为不支持日期输入类型的浏览器使用Webshim。
本地浏览器工作正常;更改日期将更改模型,而更改模型将以编程方式更改日期输入中显示的日期。
在不支持日期类型(例如IE8)的浏览器上更改日期可以正常工作并更新Knockout模型,但反之则不成立。对模型的更改不会传播到Webshim生成的日期选取器,而只会传播到Webshim使用的隐藏输入。
是否有Webshim提供的方法或事件可以调用或触发,以告诉它查看数据并在更改后更新UI?我如何编写Knockout绑定来调用它?

fzwojiic

fzwojiic1#

事实证明,webshim需要使用jQuery().瓦尔()来更新日期,而不是直接使用DOM。我能够编写一个淘汰绑定,它通过扩展普通的值绑定来实现这一点:

ko.bindingHandlers.date = $.extend({}, ko.bindingHandlers.value);

ko.bindingHandlers.date.update =  function(element, valueAccessor) {
    // Set value using jQuery val method as this is caught internally by webshim
    $(element).val(valueAccessor()());
};

然后我可以用途:

<input type="date" data-bind="'date': date">

如所期望的那样。

相关问题