我使用的是带有敲出绑定的html5 <input type="date">。我将webshim用于不支持html5日期的浏览器。
原生html5浏览器运行良好,更改日期会更改模型,更改模型会以编程方式更改日期输入中显示的日期。
在不支持html5的浏览器(例如IE8)上更改日期可以正常工作,并更新淘空模型,但反之亦然。对模型的更改不会传播到webshim生成的日期选择器,只会传播到webshim使用的隐藏输入。
有没有webshim提供的方法或事件,我可以调用或触发来告诉它查看数据并在更改后更新UI?我怎么才能写一个敲出绑定来调用它呢?
发布于 2014-12-04 22:32:32
事实证明,webshim要求您使用jQuery().val()来更新日期,而不是直接使用DOM。我能够通过扩展普通的值绑定来编写一个knockout绑定来实现这一点:
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">不出所料。
https://stackoverflow.com/questions/27292189
复制相似问题