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

最佳答案

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

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

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

但是因为按照属性声明的顺序执行扩展程序并没有真正定义,如果在这种情况下使用两个扩展程序会更安全:
ko.observable('label2').extend({throttle: 500}).extend({required: true })

Demo fiddle.

关于knockout.js - 带 throttle 的 knockout 验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13272446/

10-11 12:25