2012-08-23 19 views
15

Wir verwenden Knockout.js und das Knockout-Validierungs-Plugin. Wenn ein Benutzer zu einer Seite mit Validierungsfehlern zurückkehrt, möchten wir, dass die Fehlermeldungen angezeigt werden. Weiß jemand, ob es möglich ist, eine Knockout-Validierung auszulösen, ohne die gebundene Antwort tatsächlich zu ändern?Knockout-Validierung - So zeigen Sie Fehlermeldungen an

Antwort

42

Die Lösung ist, ShowAllMessages aufzurufen. Wenn das Ansichtsmodell verschachtelte Observables enthält, stellen Sie sicher, dass ko.validation.configure auf tiefe Gruppierung festgelegt ist, da der Standardwert false ist.

Beispiel:

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 
} 

Alternativ können Sie !viewModel.isValid() mit result().length > 0

+9

Hinweis ersetzen, dass validatedObservable ruft Gruppe hinter den Kulissen und speichert in Fehler Eigenschaft, so gibt es keine Notwendigkeit, die eigene Gruppe zu tun. 'if (! ViewModel.isValid()) { viewModel.errors.showAllMessages(); } ' –

+4

Wenn Sie die tiefe Option nicht benötigen, dann müssen Sie Ihre eigene Gruppe ... –

+0

Vielen Dank. Das war unglaublich hilfreich. – Quickhorn

Verwandte Themen