4

我刚刚注意到使用油门扩展器会导致淘汰赛验证停止工作。有没有办法解决这个问题?

var viewModel = {
    label1: ko.observable('label1').extend({required: true}),
    label2: ko.observable('label2').extend({required: true, throttle: 1}),
};

ko.applyBindings(viewModel);

jsFiddle:http: //jsfiddle.net/rWqkC/

4

2 回答 2

7

在这种情况下,扩展器的顺序确实很重要,因为throttle扩展器返回一个新ko.dependentObservable的,这就是为什么如果你有第required一个,那么它将应用于错误的 observable。

更改顺序,它应该可以工作:

ko.observable('label2').extend({throttle: 500, required: true }),

但是因为没有真正定义按属性声明顺序执行的扩展程序,所以在这种情况下使用两个扩展会更安全:

ko.observable('label2').extend({throttle: 500}).extend({required: true })

演示小提琴。

于 2012-11-07T16:08:12.077 回答
0

对于找到此答案的任何人:

如果您使用的是 3.1.0 之后的 Knockout 版本,请考虑使用rateLimit 扩展器。(rateLimit 代替油门)

于 2019-01-31T18:17:03.593 回答