我刚注意到使用节流扩展器会导致Knockout Validation停止工作。有没有解决这个问题的方法?
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/
答案 0 :(得分:7)
在这种情况下,扩展程序的顺序很重要,因为throttle
扩展程序返回一个新的ko.dependentObservable
,这就是为什么如果你先拥有required
,那么它将应用于错误的observable。
更改订单,它应该有效:
ko.observable('label2').extend({throttle: 500, required: true }),
但是因为在属性声明的顺序中执行的扩展程序没有真正定义,所以如果在这种情况下使用use two,则更安全:
ko.observable('label2').extend({throttle: 500}).extend({required: true })
答案 1 :(得分:0)
对于任何人谁认为这样的回答:
如果您在3.1.0之后使用淘汰赛版本,可以考虑使用rateLimit extender。 (rateLimit代替油门)