【发布时间】:2016-10-12 18:22:29
【问题描述】:
我有以下JS 对象:
var form= function () {
var self = this;
self.Name = ko.observable().extend({
required: {
message: 'Name is required.'
}
});
self.Manager = ko.observable().extend({
required: {
message: 'Manager is required.'
}
});
self.Email = ko.observable().extend({
required: {
message: 'Email is required.'
},
email: {
message: 'Entered Email is not valid.'
}
});
self.Players = ko.observableArray([]);
}
上述JS 对象中的Players 数组使用以下JS 对象使用new Player() 语法填充:
var Player = function () {
var self = this;
self.FirstName= ko.observable().extend({
required: {
message: 'Player First Nameis required.'
}
});
self.LastName= ko.observable().extend({
required: {
message: 'Player Last Name is required.'
}
});
}
我对@987654330@ 库使用了以下设置:
ko.validation.init({
registerExtenders: true,
messagesOnModified: true,
insertMessages: false,
parseInputAttributes: true,
messageTemplate: null,
decorateInputElement: true,
errorElementClass: 'error',
grouping: {
deep: true,
observable: true
}
}, true);
我正在使用viewModel.errors.showAllMessages() 在视图模型中显示所有错误消息。我面临的问题是player 对象的验证没有被触发,因为它存在于Form 对象中。我什至将deep 属性设置为true,但即使这样也不起作用,可能是什么问题?
【问题讨论】:
-
你能设置一个有用的小提琴吗?即使你使用
validatedObservable。 -
请尝试将您的代码扩展为minimal reproducible example。如果我自己这样做,并添加缺少的部分以使其启动并运行(但请坚持您逐字提供的代码),it works as expected and player last names get validated just fine。
标签: javascript validation knockout.js knockout-validation