0

我的问题是为什么我的两个数据绑定输入字段在我清除它们时表现不同,即使据我所知它们的设置方式与淘汰赛中计算的 observables 相同。

使用这个小提琴:http: //jsfiddle.net/ya7eF/167/

'min' 字段工作正常,'hrs' 字段不正常。要重现我的问题,请按照以下步骤操作。当我从 Duration 'hrs' 字段中删除文本时,我想了解为什么在模糊时它没有被零替换,例如 min 字段。

  1. 从第二个持续时间('min')文本字段中删除文本('30'),然后失去对该字段的关注。空字符串被零替换,并且其他计算的 observables(结束时间)被更新。如预期的。
  2. 重新运行小提琴。
  3. 从 Duration 'hrs' 文本字段中删除文本 ('0')
  4. 模糊“小时”
  5. 没发生什么事; 计算的可观察数小时的“读取”方法甚至不会被调用。我无法弄清楚这两个可观察对象之间有什么区别。
4

1 回答 1

1

在第二种情况下,Durationobservable 的值实际上并没有改变。当 observable 的值设置为当前值时,不会向订阅者发送通知。这意味着不会触发计算的 observables 的读取函数。

处理这个问题的一种技术是使用 observable 的valueHasMutated函数来确保通知被发送出去。为避免多个通知,您可以执行以下操作:

        if (totalMinutes !== self.Duration()) {
            self.Duration(totalMinutes);
        }
        self.Duration.valueHasMutated();

这是您更新的示例:http: //jsfiddle.net/rniemeyer/ya7eF/168/

于 2012-07-06T20:36:55.807 回答