Knockout Validation — как показать одно сообщение об ошибке

Я проверяю свою модель представления при отправке на проверку , как описано здесь, на SO, на самом деле.

В моей форме есть действие «Сохранить прогресс» в дополнение к действию «Отправить». Он отправляется на сервер почти так же, но имеет меньше обязательных полей.

Я хотел бы оставить четыре абсолютно обязательных поля там, где они сейчас находятся в модели представления... т. е. сохранить их в большей группе проверки для отправки.

Есть ли способ в 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.
     //???
  }

});

Есть ли способ заполнить этот последний блок else, или я должен использовать другой подход к этому?

Спасибо


person Brad    schedule 21.01.2014    source источник


Ответы (1)


Или есть способ выбрать поля из моей модели представления и поместить их в свою собственную группу проверки (но также оставить их в большей группе)?

Да, вы можете определить столько групп, сколько хотите; и наблюдаемые могут быть в нескольких группах проверки.

Так, например, предположим, что ваша группа проверки для всех ошибок в вашей модели представления выглядит следующим образом:

ViewModel.errors = ko.validation.group(ViewModel);

Вы также можете добавить отдельные группы следующим образом:

ViewModel.saveErrors = ko.validation.group([ViewModel.requiredForSave1, ViewModel.requiredForSave2]);

Кроме того, вызывая showAllMessages в группе проверки, вы показываете только сообщения для наблюдаемых в этой группе. ViewModel.saveErrors.showAllMessages() будет показывать сообщения проверки только для requiredForSave1 и requiredForSave2

надеюсь, это поможет

person rwisch45    schedule 21.01.2014
comment
Идеально. Спасибо @rwisch45. Нашел это и здесь, прямо из источника: официальный документы. Не знаю, почему мне так трудно ориентироваться на этом сайте документации, но я знаю. - person Brad; 22.01.2014
comment
Значит, единственный способ отобразить одно сообщение об ошибке для наблюдаемого — добавить его в группу? - person Alex Hope O'Connor; 10.09.2016