gpt4 book ai didi

knockout.js - 如何验证数组?

转载 作者:行者123 更新时间:2023-12-03 16:36:01 24 4
gpt4 key购买 nike

我正在尝试使用 knockout validation lib验证对象数组。如何为一组可观察值形成验证组对我来说并不简单。我设法让它工作的唯一方法是这样的( JSFIDDLE included ):

var Note = function () {
var self = this;
self.name = ko.observable().extend({ required: true });
};

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

self.notes = ko.observableArray([new Note(), new Note()]);

self.validatedObservables = function() {
var arr = [];
ko.utils.arrayForEach(self.notes(), function(note) {
arr.push(note.name);
});
return arr;
};

self.errors = ko.validation.group(self.validatedObservables());

self.submit = function () {
if (self.errors().length != 0) {
self.errors.showAllMessages();
}
};

};

ko.applyBindings(new viewModel());

似乎我的方法不必要地冗长。根据源代码,您可以简单地将一个 observable 传递给 ko.validation.group:
self.errors = ko.validation.group(self.notes());

但这不起作用。

最佳答案

有一个配置选项可以让分组更深(递归)。
可以通过 ko.validation.init( { grouping: { deep: true } } ) 全局设置。
或在 group调用自身,例如:self.errors = ko.validation.group( self.notes(), {deep: true} );
在这里更新 fiddle :http://jsfiddle.net/KHFn8/4116/

顺便说一句,你这样做的方式可以写成更短的形式:

self.errors = ko.validation.group(
ko.utils.arrayMap(self.notes(), function(note) { return note.name }));

编辑 :
我的 fiddle 不再适用于最新版本的 KO 验证。这是在我给出答案时(2012 年 6 月)使用最新版本的相同 fiddle : http://jsfiddle.net/KHFn8/4117/

关于knockout.js - 如何验证数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936527/

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