我有一个KnockoutJS视图模型,充当" master"几个模块化视图模型的viewmodel。这些模块化vm利用敲除验证的属性进行自己的表单验证。我想在主视图模型中创建这些视图模型validatedObservable
,因此我只需检查每个isValid
是否为真:
function MasterViewModel() {
var self = this;
self.addUserViewModel = ko.validatedObservable(new AddUserViewModel());
}
function AddUserViewModel() {
var self = this;
self.username = ko.observable().extend({ required: true });
self.addUser = = function () {
if(self.isValid()) {
// Perform add user logic here
}
}.bind(self);
}
但是,当我尝试调用它时,子视图模型不存在isValid
方法。添加作为函数的validatedObservable
属性是否存在问题?
答案 0 :(得分:1)
isValid
由函数validatedObservable
添加,因此只能在MasterViewModel
内使用。
如果要检查模型在模型内是否有效,可以使用ko.validation.group
:
function AddUserViewModel() {
var self = this;
self.username = ko.observable().extend({ required: true });
var errors = ko.validation.group(self, { deep: true });
self.addUser = = function () {
if (!errors().length) {
// Perform add user logic here
}
};
}