我不明白奇怪的淘汰赛验证异步验证器行为。如果我在此验证器中与其他可观察对象一起工作,验证过程将变得无止境。请看jsFiddle 示例。如果我删除字符串 4、5 或 8,它将正常工作。
ko.validation.rules.asyncValidator = {
async: true,
validator: function (val, vm, callback) {
vm.bar();
vm.bar(true);
setTimeout(function () {
console.log('validating ...');
vm.bar(false);
callback(true);
}, 1000);
}
};
ko.validation.registerExtenders();
vm = {
foo: ko.observable(),
bar: ko.observable()
};
vm.foo.extend({asyncValidator: vm});
ko.applyBindings(vm);