Knockout验证 - 如何显示单个错误消息

Bra*_*rad 9 javascript validation knockout.js knockout-validation

确实在提交验证时查看了我的视图模型, 如此处所述.

除"提交"操作外,我的表单还有"保存进度"操作.它以相同的方式提交给服务器,但所需的字段较少.

我想保留它们目前在View Model中的四个绝对必需的字段... 即将它们保存在更大的验证组中以供提交.

Knockout Validation中是否有一种方法可以像showAllMessages()完整验证组一样简单地显示特定消息?我查看了源代码,但找不到任何showMessage()附加到单个错误的内容.

或者,有没有办法从我的视图模型中选择字段并将它们放在自己的验证组中(但也将它们保存在更大的组中)?

所以,作为一个例子:

var ViewModel = ko.validatedObservable({
  requiredForSave1:  ko.observable().extend({ required: true }),
  requiredForSave2:  ko.observable().extend({ required: true }),
  requiredForSubmit: ko.observable().extend({ required: true })
  // ... and many more.
});

$('#sumbit').on('click', function(){

  //check the entire validation group
  if ( ViewModel.errors().length === 0 ){
    doSubmit();
  }
  else{
    ViewModel.errors.showAllMessages();
  }
});

$('#save').on('click', function(){

  //check only part of the validation group
  if ( ViewModel.requiredForSave1.isValid() &&
       ViewModel.requiredForSave2.isValid() ){

    doSubmit();
  }
  else{
     //show only one or two specific validation messages.
     //???
  }

});
Run Code Online (Sandbox Code Playgroud)

有没有办法填写最后一个else块,或者我应该采取不同的方法吗?

谢谢

rwi*_*h45 9

或者,有没有办法从我的视图模型中选择字段并将它们放在自己的验证组中(但也将它们保存在更大的组中)?

是的,您可以根据需要定义任意数量的组; 和observables可以在多个验证组中.

因此,例如,假设您的视图模型中的所有错误的验证组如下:

ViewModel.errors = ko.validation.group(ViewModel);
Run Code Online (Sandbox Code Playgroud)

您还可以添加以下各个组:

ViewModel.saveErrors = ko.validation.group([ViewModel.requiredForSave1, ViewModel.requiredForSave2]);
Run Code Online (Sandbox Code Playgroud)

此外,通过调用showAllMessages验证组,您只显示该组中可观察对象的消息.ViewModel.saveErrors.showAllMessages()将只显示为验证消息requiredForSave1requiredForSave2

希望有所帮助

  • 完善.谢谢@ rwisch45.从源头上也可以找到它:[官方文档](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Validating-Only-Specific-Observables).不知道为什么我发现文档网站很难导航,但我确实如此. (2认同)