带油门的敲门验证

时间:2012-11-07 15:09:14

标签: knockout.js knockout-validation

我刚注意到使用节流扩展器会导致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/

2 个答案:

答案 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 })

Demo fiddle.

答案 1 :(得分:0)

对于任何人谁认为这样的回答:

如果您在3.1.0之后使用淘汰赛版本,可以考虑使用rateLimit extender。 (rateLimit代替油门)