我试图用 metro.js 日期选择器和淘汰赛来破解我的方式。到目前为止,我的 datepicker 绑定代码如下所示:
ko.bindingHandlers.datepicker = {
init: function(el, va, ba, model, ctx) {
var prop = va();
$(el).datepicker({
onSelect: function(txt, date) {
prop(date);
}
});
},
update: function(el, va, ba, model, ctx) {
var prop = va();
var date = ko.unwrap(prop);
if(date) {
applyDate(date);
}
function applyDate(dt) {
var j = $(el);
var dp = j.data('datepicker');
var inp = j.find('input');
var fmt = dp.options.format;
var sDate = format(fmt, dt);
// dp._calendar.calendar.dayClick(sDate, dt);
// inp.value = sDate;
dp._calendar.calendar('setDate', sDate);
j.find('input').val(dp._calendar.calendar('getDate')).trigger('change', sDate);
}
function format(fmt, dt) {
fmt = fmt.replace('yyyy', dt.getFullYear());
fmt = fmt.replace('mm', pad(dt.getMonth() + 1));
fmt = fmt.replace('dd', pad(dt.getDate()));
return fmt;
}
function pad(n) {
return parseInt(n) < 10 ? '0' + n: '' + n;
};
}
}
问题是当我在date
属性上发布模型更新时,它绑定到日期选择器不会更新。我的意思是,它是第一次这样做,但发布后,它无法更新文本框;日历显示还可以。最终我需要改变applyDate
函数中的逻辑......
JSBin: http: //jsbin.com/rupaqolexa/1/edit ?html,js,output
更新:刚刚出现了另一个问题......它在 IE 10+ 中不起作用。日期显示NaN
在 UI 中...
更新:复制步骤
- 输入日期第二个文本框:2013/05/13 并单击更改按钮。观察日期在日期选择器文本框中更新。这按预期工作。(在 IE 中除外)。
- 在文本框中输入另一个日期并单击更改按钮。观察日期选择器文本框中的日期未更新。这里预计日期选择器文本框会更新为最新值。