次のようなビューモデルがあります。
var ViewModel = function() {
var self = this;
self.hourOptions = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23];
self.minuteOptions = [0, 15, 30, 45];
self.formatTimeOption = function(hour) {
if (hour < 10) return "0" + hour;
return hour.toString();
};
self.startDate = ko.observable(null);
self.startDateHour = ko.computed({
read: function() {
return new Date(self.startDate()).getHours();
},
write: function(value) {
var newDate = new Date(self.startDate());
newDate.setHours(value);
self.startDate(newDate);
}
});
self.startDateMinute = ko.computed({
read: function() {
return new Date(self.startDate()).getMinutes();
},
write: function(value) {
var newDate = new Date(self.startDate());
newDate.setMinutes(value);
self.startDate(newDate);
}
});
};
ご覧のとおり、更新時にstartDateの時間/分を更新する書き込み可能な計算されたオブザーバブルがあります。
これは機能していますが、機能している場合、datepicker
入力フィールドには(たとえば)ではなく、長い形式の日付が表示されます。
2013年1月3日
このJSFiddleはここから入手できます:http://jsfiddle.net/alexjamesbrown/2kSpL/9/