gpt4 book ai didi

jquery - 使用 Knockout 验证插件时 Knockout ViewModel isValid 错误

转载 作者:行者123 更新时间:2023-11-30 23:57:12 25 4
gpt4 key购买 nike

我是使用 knockout 的新手,我正在尝试将 knockout 验证插件与映射插件一起使用。我在 View 模型对象上的 isValid 函数上遇到问题。根据文档 isValid 应该返回一个 bool 来确定 View 模型上的任何可观察值是否有效,但是当我调用它时,我收到一条错误,指出 isValid 不是函数。但是,如果我对可观察量本身调用 isValid ,它就可以正常工作。问题是我正在使用映射插件和从服务器获取的一些动态数据对象,因此我不一定知道需要验证的可观察对象的名称,因此单独验证它们是不可行的。下面的示例是简化的,但在实际实现中我不知道可观察量的名称。也许我只是错过了一些文档?

感谢您的宝贵时间。

这确实有效

    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'));

最佳答案

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

我刚刚在 View 模型上检查 isValid() 的调用上方添加了这行代码

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

关于jquery - 使用 Knockout 验证插件时 Knockout ViewModel isValid 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16802788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com