【问题标题】: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/

【问题讨论】:

    标签: knockout.js knockout-validation


    【解决方案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 代替油门)

    【讨论】:

      猜你喜欢
      • 2012-02-18
      • 2011-08-09
      • 1970-01-01
      • 2013-03-22
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      相关资源
      最近更新 更多