我的viewmodel有一个ko.observable
成员,用于存储对话状态对象。每个对话框对象都有对应于对话框中输入字段的各种成员。我想使用KnockoutJS验证插件为对话框添加验证。
但是,我不希望将验证添加到我的整个视图模型中,而只是添加到我的对话框中。当我尝试扩展这样的对话框时:
this.dialog = ko.observable(new RegistrationDialog(self)).extend({validatable: true});
事情无法正常工作:未定义isValid()和errors()方法,并且验证无法正常工作。我创建了一个jsfiddle来说明这一点。当我按下开始按钮时,对话框打开(原谅缺少CSS),但按Enter键不会生成任何错误消息。电子邮件验证也无法正常工作,显示消息“确实不是正确的电子邮件地址。”
答案 0 :(得分:2)
我会选择documentation:
this.dialog = ko.validatedObservable(new RegistrationDialog(this));
然后修复你的小提琴中的一些错误:
enable: isValid
应该是enable: isValid()
(由于修复了表单提交绑定,我也删除了点击绑定)我认为就是这样。 Updated fiddle here
答案 1 :(得分:1)