使用Knockoutvalidation插件时,Knockout ViewModel isValid错误

我是新手使用淘汰赛,我正在尝试使用淘汰validation插件和映射插件。 我在视图模型对象上遇到了isValid函数的问题。 根据文档,isValid应该返回一个bool来确定视图模型上的任何可观察对象是否有效但是当我调用它时我得到一个错误,说isValid不是一个函数。 但是,如果我在observables上调用isValid它可以正常工作。 问题是我正在使用映射插件和我从服务器获得的一些动态数据对象,所以我不一定知道我需要validation的observable的名称,因此单独validation它们是不可行的。 以下示例已经过简化,但在实际实现中,我不知道可观察对象的名称。 也许我刚刚错过了一些文档?

谢谢你的时间。

这确实有效

var dataItem = { FirstName: '', LastName: '', Age: '', Email: '' } var viewModel = function(data) { var self = this; this.Email = ko.observable().extend({ email: true }); this.LastName = ko.observable().extend({ required: true }); this.Age = ko.observable().extend({ required: true, min: 0 }); this.saveClick = function () { if (!self.Email.isValid() || !self.Age.isValid() || !self.LastName.isValid()) { alert('Not valid'); else { alert('Valid'); } }; this.cancelClick = function () { ko.mapping.fromJS(dataItem, null, this); } ko.mapping.fromJS(data, {}, this); }; var viewModelInstance = new viewModel(dataItem); ko.applyBindings(viewModelInstance, document.getElementById('bindingDiv')); 

但这不起作用

  var dataItem = { FirstName: '', LastName: '', Age: '', Email: '' } var viewModel = function(data) { var self = this; this.Email = ko.observable().extend({ email: true }); this.LastName = ko.observable().extend({ required: true }); this.Age = ko.observable().extend({ required: true, min: 0 }); this.saveClick = function () { //TODO: according to the documentation you should be able to just //check self.isValid() but that throws an error that there is no //such method on the object? dunno why. if (!self.isValid()) { alert('Not Valid'); } else { alert('Valid'); } }; this.cancelClick = function () { ko.mapping.fromJS(dataItem, null, this); } ko.mapping.fromJS(data, {}, this); }; var viewModelInstance = new viewModel(dataItem); ko.applyBindings(viewModelInstance, document.getElementById('bindingDiv')); 

在VM中调用ko.validation.group以对VM级别的所有可validation可观察对象进行分组。 只有当没有子观察者有错误时, isValid才会成立。

关于ko.validation.group的其他一些SO答案

如何使用ko.validation.group函数

Knockout Validation ko.validation.group vs ko.validatedObservable

我以为我会发布我需要使用的实际代码。 感谢ragnarok56让我指向正确的方向。 我显然花在文档上的时间太少了。

我刚刚在调用上面添加了这行代码来检查视图模型上的isValid()

 var result = ko.validation.group(viewModelInstance, { deep: true });