我有一个显示日期的日期字段:
<input type="text" data-bind='value: model.BeginDateTime'>
然后我有一个字段显示从月初开始的小时数:
<input type="text" data-bind='value: model.BeginHour()'>
它从计算函数中获取值
self.model.BeginHour = ko.computed(function(){
var dateToConvert = new Date(self.model.BeginDateTime());
var zeroDate = new Date(dateToConvert.getFullYear(), dateToConvert.getMonth(), 01, 0, 0, 0, 0);
var millisecondsDifference = (dateToConvert - zeroDate);
var hoursDifference = (millisecondsDifference / ((1000 * 60) * 60));
return Math.round(hoursDifference);
});
但是如果小时值发生变化,我需要能够更新日期。
例如,如果日期是2/1/2012 8:00:00 PM,则BeginHour值为20.现在,我希望能够将BeginHour的值从20更改为21,并且应该更新模型。 BeginDateTime至2/1/2012 9:00:00 PM。 conmputed目前正好用于显示小时但我更新小时字段时无法让它工作。 感谢
答案 0 :(得分:0)
计算之前曾被称为dependentObservable,它可以帮助你理解你出错的地方。
当你有一个计算引用模型.BeginDateTime意味着computed依赖于model.BeginDateTime的值。一旦你改变了model.BeginDateTime的值,它就会变异。
现在你似乎想要反过来,这意味着你希望model.BeginDateTime是一个计算引用模型.BeginHour。
您还可以订阅更改ko中属性的事件。 e.g。
self.model.BeginHour.subscribe(function(newValue){
console.log("I get called when BeginHour value changes to " + newValue);
});