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

Мы используем Knockout.js и плагин проверки Knockout. Когда пользователь возвращается на страницу с ошибками проверки, мы хотим, чтобы отображались сообщения об ошибках. Кто-нибудь знает, можно ли запустить проверку нокаута без фактического изменения связанного ответа?


person CBlack    schedule 23.08.2012    source источник


Ответы (1)


Решение состоит в том, чтобы вызвать showAllMessages. Если модель представления имеет вложенные наблюдаемые объекты, обязательно установите ko.validation.configure для использования глубокой группировки, поскольку значение по умолчанию равно false.

Пример:

viewModel.save = function()
{
    var result = ko.validation.group(viewModel, {deep: true});
    if (!viewModel.isValid()) 
    {
        alert("Please fix all errors before preceding");
        result.showAllMessages(true);

        return false;
    }

    //actually save stuff, call ajax, submit form, etc
}

Кроме того, вы можете заменить !viewModel.isValid() на result().length > 0

person CBlack    schedule 24.08.2012
comment
Обратите внимание, что validatedObservable вызывает группу за кулисами и сохраняет в свойстве ошибок, поэтому нет необходимости создавать собственную группу. if (!viewModel.isValid()) { viewModel.errors.showAllMessages(); } - person Gudlaugur Egilsson; 05.05.2013
comment
Спасибо. Это было невероятно полезно. - person Quickhorn; 03.12.2013
comment
Как спрятать их обратно? Я заметил, что это сделало появление ошибок динамическим, т.е. показать/скрыть по мере проверки ошибок. Что, если я захочу вернуться к тому, чтобы показать их все сразу, скажем, одним нажатием кнопки, как в этом примере здесь. Спасибо - person Swanidhi; 14.09.2016