KnockoutJS 验证 - 嵌套的 ViewModel 作为 validatedobservable

KnockoutJS Validation - nested ViewModel as validatedobservable

我有一个 KnockoutJS 视图模型,它充当多个模块化视图模型的 "master" 视图模型。这些模块化虚拟机利用敲除验证属性来进行自己的表单验证。我想在主视图模型中制作这些视图模型 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 属性 是否有问题?

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
        }
    };
}