這裏有一個簡單的方法來實現自己的目標:
首次設置進行驗證的配置以及與此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