我是使用淘汰赛的新手,我正在尝试使用淘汰验证插件以及映射插件。我在视图模型对象上遇到了isValid函数的问题。根据文档,isValid应返回一个bool来确定视图模型上的任何可观察对象是否有效,但是当我调用它时,我得到一个错误,说isValid不是函数。但是,如果我在observables上调用isValid它可以正常工作。问题是我正在使用映射插件和我从服务器获得的一些动态数据对象,因此我不一定知道我需要验证的observable的名称,因此单独验证它们是不可行的。以下示例已经过简化,但在实际实现中,我不知道可观察对象的名称。也许我刚刚错过了一些文档?
感谢您的时间。
这确实有效
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'));
答案 0 :(得分:5)
想到我发布了我需要使用的实际代码。感谢ragnarok56让我指向正确的方向。我显然花在文档上的时间太少了。
我刚刚在调用上面添加了这行代码来检查视图模型上的isValid()
var result = ko.validation.group(viewModelInstance, { deep: true });
答案 1 :(得分:4)
在VM中调用ko.validation.group
以对VM级别的所有可验证可观察对象进行分组。只有当没有子观察者有错误时,isValid
才会成立。
关于ko.validation.group的其他一些SO答案
How to use ko.validation.group function
Knockout Validation ko.validation.group vs ko.validatedObservable