我有两个视图模型,一个用validation.group
创建,另一个用validatedObservabel
创建。方法errors.showAllMessages()
对于第二个视图模型失败。为什么呢?
function VM1 {
this.errors = ko.validation.group(this);
email:ko.observable().extend({required:true})
}
var vm1 = new VM1();
if (!vm1.isValid()) {
vm1.errors.showAllMessages(); //works fine
}
function VM2 {
this.errors = ko.validatedObservable(this);
email:ko.observable().extend({required:true})
}
var vm2 = new VM2();
if (!vm2.isValid()) {
vm2.errors.showAllMessages(); //fails
}
答案 0 :(得分:2)
validatedObservable是validation.group的包装器,它提供了更多的特性和功能。它通过内部创建validation.group来实现这一点。要访问validation.group方法(例如showAllMessages),您需要通过validatedObservable上的'errors'属性显式访问内部validation.group对象。
即。
function VM2 {
this.errors = ko.validatedObservable(this);
email:ko.observable().extend({required:true})
}
var vm2 = new VM2();
if (!vm2.isValid()) {
vm2.errors.showAllMessages(); //fails
vm2.errors.errors.showAllMessages(); // Works!
}
显然,使用errors.errors看起来有点奇怪,但这只是因为你命名了validatedObservable'错误'。如果你称它为'validationModel'
,语法会更好看e.g。
function VM2 {
this.validationModel= ko.validatedObservable(this);
email:ko.observable().extend({required:true})
}
var vm2 = new VM2();
if (!vm2.isValid()) {
vm2.validationModel.errors.showAllMessages(); // Works!
}