KnockoutJS验证 - 嵌套的ViewModel为validatedobservable

时间:2015-05-08 06:43:21

标签: knockout.js knockout-validation

我有一个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属性是否存在问题?

1 个答案:

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