2012-11-07 20 views
4

我剛注意到使用節流閥延長器會導致Knockout驗證停止工作。有沒有解決這個問題的方法?使用節流閥進行敲除驗證

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/

回答

7

在這種情況下,擴展的順序事情確實是因爲throttle擴展返回一個新的ko.dependentObservable這就是爲什麼如果你有required第一那麼它將應用在錯誤的觀測。

更改順序,它應該工作:

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

但由於在財產申報的順序擴展的執行是不是真的確定你是安全的,如果你使用採用兩個在這種情況下伸出:

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

Demo fiddle.

+0

你可以不依賴於聲明的順序上,是不是真正定義。將每個擴展放在單獨的'extend()'調用中會更安全。 –

+0

@JeffMercado是的,你是對的我已經更新了我的答案。 – nemesv