2012-08-23 25 views
15

Estamos usando Knockout.js y el complemento de validación Knockout. Cuando un usuario regresa a una página que tiene errores de validación, queremos que se muestren los mensajes de error. ¿Alguien sabe si es posible activar la validación de nocaut sin cambiar realmente la respuesta consolidada?Validación Knockout - Cómo mostrar mensajes de error

Respuesta

42

La solución es llamar a showAllMessages. Si el modelo de vista ha anidado observables, asegúrese de establecer ko.validation.configure para usar la agrupación profunda porque el valor predeterminado es falso.

Ejemplo:

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 
} 

Alternativamente, puede reemplazar !viewModel.isValid() con result().length > 0

+9

Tenga en cuenta que validatedObservable llama grupo detrás de las escenas y tiendas en propiedad errores, así que no hay necesidad de hacer su propio grupo. 'if (! ViewModel.isValid()) { viewModel.errors.showAllMessages(); } ' –

+4

A menos que necesite la opción profunda, entonces tiene que hacer su propio grupo ... –

+0

Gracias. Esto fue increíblemente útil. – Quickhorn

Cuestiones relacionadas