我刚刚注意到使用 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/