【发布时间】:2016-02-21 07:14:19
【问题描述】:
我正在尝试使用 Knockout Validation 在计算的 observable 上手动设置错误,但未显示验证消息。在调用应用绑定并设置组后,我需要能够设置错误。
var viewModel = {
computedTest: ko.computed(function(){
return 'Test'
})
};
viewModel.errors = ko.validation.group(viewModel);
ko.applyBindings(viewModel);
viewModel.computedTest.extend({ validatable: true });
viewModel.computedTest.setError('oops');
viewModel.errors.showAllMessages(true);
使用此示例,validationMessage 不会为 computedTest observable 显示。
我相信原因是因为验证组不知道computedTest 现在已扩展。但是我不确定如何刷新组以便显示错误消息。
这是一个更好的例子:https://jsfiddle.net/onbyc67h/。
如您所见,如果您在运行 applyBindings 之前设置了 .extend({ validatable: true }),则会显示一条消息,但如果您在运行之后设置则不会。
谢谢
【问题讨论】:
-
我正在尝试这样做,以便可以在表单提交时映射一组服务器验证错误。除了这个使用计算的 observable 代替常规 observable 的示例之外,一切都工作正常
-
有什么原因你不能扩展最初的计算?
标签: validation knockout.js knockout-validation