0

我正在使用 knockout.js 和 knockout.validation。我创建了一个书籍视图模型,其中包含书籍作者姓名和书籍名称的 2 个属性:

function BookViewModel(bookObject) {
        var self = this;
        self.AuthorName = ko.observable(bookObject.AuthorName)
            .extend({
                required: { message: "Please enter menu name" },
                minLength: 4,
                maxLength: 10
            });
        self.Name = ko.observable(bookObject.Name)
            .extend({
                required: { message: "Please enter course name" },
                minLength: 4,
                maxLength: 10
            });
}

我已经对属性应用了本机验证规则。现在我知道我们可以通过以下方式检查属性值是否有效:

     bookViewModelObject.AuthorName.isValid()

现在通过上面的语句我们可以检查用户输入的作者姓名是否满足我们的验证规则。我的问题是如何在单个语句中检查 bookViewModel 的所有属性是否有效?意思是这样的:

     bookViewModelObject.isValid() 
4

2 回答 2

2

您可以使用ko.validation.group

var viewModel = new BookViewModel(data);
viewModel.errors = ko.validation.group(viewModel);

viewModel.errors您将有许多错误viewModel

这是一个小提琴:http: //jsfiddle.net/vyshniakov/3J3qV/

于 2012-10-23T14:09:02.230 回答
0

不确定这是否可行,但现在(使用 KnockoutJS 3.0 和验证插件 2.1)你可以做到这一点,即。

ko.validation.init();
var validatedViewModel = ko.validatedObservable(new BookViewModel(book))();
ko.applyBindings(validatedViewModel);

validatedViewModel.isValid();

注意ko.validatedObservable()方法。

这是适当的jsfiddle

于 2013-12-17T17:35:46.653 回答