4

スロットル エクステンダーを使用すると 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/

4

2 に答える 2

7

この場合、エクステンダーはthrottle新しいものを返すため、エクステンダーの順序は重要です。そのためko.dependentObservablerequired最初のものがある場合は、間違ったオブザーバブルに適用されます。

順序を変更すると、機能するはずです。

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

ただし、プロパティ宣言の順序でのエクステンダーの実行は実際には定義されていないため、この場合は2つの拡張を使用する方が安全です。

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

デモフィドル。

于 2012-11-07T16:08:12.077 に答える