带油门的淘汰赛验证
Posted
技术标签:
【中文标题】带油门的淘汰赛验证【英文标题】:Knockout Validation with throttle 【发布时间】:2012-10-27 16:04:42 【问题描述】:我刚刚注意到使用油门扩展器会导致淘汰赛验证停止工作。有没有办法解决这个问题?
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/
【问题讨论】:
【参考方案1】:在这种情况下,扩展器的顺序确实很重要,因为 throttle
扩展器返回一个新的 ko.dependentObservable
,这就是为什么如果您首先拥有 required
,那么它将应用于错误的 observable。
更改顺序,它应该可以工作:
ko.observable('label2').extend(throttle: 500, required: true ),
但是由于没有真正定义按属性声明顺序执行的扩展程序,因此在这种情况下使用两个扩展会更安全:
ko.observable('label2').extend(throttle: 500).extend(required: true )
Demo fiddle.
【讨论】:
你不能依赖声明的顺序,这并没有真正定义。将每个扩展放在单独的extend()
调用中会更安全。【参考方案2】:
对于找到此答案的任何人:
如果您使用的是 3.1.0 之后的 Knockout 版本,请考虑使用 rateLimit extender。 (rateLimit 代替油门)
【讨论】:
以上是关于带油门的淘汰赛验证的主要内容,如果未能解决你的问题,请参考以下文章