这里有一个简单的方法来实现自己的目标:
首次设置进行验证的配置以及与此TID位启用它:
ko.validation.init({
grouping: { deep: true, observable: false }
});
现在您可以使用其他配置选项,因为您认为合适HERE。因为如果你想你的对象(其中可能有潜在的嵌套/分层)递归遍历并确定所有对象中它是有效的,重要的,我只提grouping
选项。
然后我一般使用以下方法来验证我的模型 - 我利用一个分组的功能,像这样:
var myModel = {
Id: 0,
FirstName: ko.observable('').extend({ required: true }),
LastName: ko.observable('').extend({ required: true }),
DateOfBirth: ko.observable('').extend({ date: true }),
Errors: ko.validation.group(this),
isValid: ko.computed(function() {
return this.Errors.length == 0;
});
};
或使用功能声明的方法:
function myModel() {
var self = this;
self.Id = 0;
self.FirstName = ko.observable('').extend({ required: true });
self.LastName = ko.observable('').extend({ required: true });
self.DateOfBirth = ko.observable('').extend({ date: true });
self.Errors = ko.validation.group(self);
self.isValid = ko.computed(function() {
return this.Errors.length == 0;
});
};
ko.validation.group(obj)
是这种方法的关键。此函数将递归遍历传入的对象并标识其中的每个validatable对象。然后它将它们封装到validatedObservable中,结果是一个observableArray,它填充了验证失败的验证器生成的错误消息。
所以现在我们可以写一个保存功能,像这样,在按钮接收模式或者如果你喜欢来定义对象本身,那也有用内保存方法:
var parentModel = {
Save: function(model) {
if (model.isValid())
//perform save
else {
//do whatever
//forces all error msgs associated to display in UI
model.Errors.showAllMessages();
}
}
};
确保在调用ko.validation.init()
后执行ko.applyBindings(model)
,并且您的模型已准备好验证器
希望这能为您提供一些帮助您开始的东西!这是一个comprehensive example,当我第一次开始使用这个插件时,它让我走上了正确的轨道。
您应可观察到的阵列内张贴的对象的示例代码。从那里我可以为你写一个更具体的例子。 – 2013-04-30 07:29:41