敲除验证组 - 仅将一些observable添加到验证组中

时间:2015-07-06 16:36:16

标签: validation knockout.js

如何创建一个敲除验证组,该组仅验证模型的某些属性,而不是所有属性。

例如,我有一堆可观察的模型,我想要两个不同的验证组。作为下面的一个简单示例,我希望能够从后两个属性中单独验证前两个属性。

此方案对于验证向导步骤是必要的,其中每个向导步骤中的所有可观察对象都位于一个模型中。

var mymodel = function() {
    var self = this;
    self.companyName = ko.observable().extend({ required: true });
    self.contactPerson = ko.observable().extend({ required: true });

    self.companyName2= ko.observable().extend({ required: true });
    self.contactPerson2 = ko.observable().extend({ required: true });

    // self.validationGroup1
    // self.validationGroup2
};

1 个答案:

答案 0 :(得分:1)

如果要构建向导,则应为每个步骤使用viewmodel。 Knockout-validation提供validatedObservable来知道你的所有viewmodel是否有效,并且在淘汰赛中你可以拥有父视图模型,这样你就可以编写类似这样的内容。

var mymodel = function() {
    var self = this;

    self.step1 = ko.validatedObservable({
        companyName: ko.observable().extend({ required: true });
        contactPerson: ko.observable().extend({ required: true });
    });

    self.step2 = ko.validatedObservable({
        companyName: ko.observable().extend({ required: true });
        contactPerson: ko.observable().extend({ required: true });
    });
};

要知道任何步骤是否有效,请使用

self.step1.isValid();

要访问您可以使用的任何属性

self.step1().companyName() ==> value