Ho un semplice modello di visualizzazione con alcuni attributi richiesti ... Voglio che ogni input evidenzi il rosso se la proprietà corrispondente non è valida, ma non voglio che questa evidenziazione visualizza quando la pagina viene inizialmente caricata ... solo quando un valore cambia o quando l'utente tenta di salvare/continuare ...Prevenire la convalida a eliminazione diretta dalla valutazione sul carico iniziale
In questo momento sta convalidando il modello di vista sul caricamento iniziale perché sto specificando il binding dei dati = "css: {error: name.isValid() == false}", ma non conosco nessun altro modo per far funzionare questo in modo dinamico (simile a come funziona validazione jQuery discreta) ...
var foo = { name: ko.observable().extend({required: true}) };
<div data-bind="css: { error: !name.isValid() }">
<input type="text" data-bind="value: name" />
</div>
Qualche idea su come realizzare questo lavoro sarebbe apprezzata ... Grazie!
Siamo spiacenti, nel mio sforzo di semplificare la mia esempio, ho lasciato che io sono in realtà decorare il parent-div con la classe "error", non l'elemento input stesso, in quanto vi sono altri elementi figlio/fratello che devono anche essere modificati (es. colore etichetta e "span" * visibilità), quindi questo non funzionerà per me, comunque, penso di aver trovato un modo per accom questo ... in sostanza, aggiungo .isModified (false) dopo ogni chiamata .extend(), e poi controllo se .isModified() nella mia logica di css (vedi sotto ...) –
Ho aggiunto la mia risposta con un soluzione più semplice e più riutilizzabile decorare l'elemento genitore .... provalo! – RodneyTrotter
Sono stato in grado di farlo funzionare senza dover creare un gestore di binding ... L'unica parte che non mi piace della mia soluzione è che sto dovendo eseguire manualmente il loop delle proprietà del modello della vista e impostare isModified (true) in modo che i campi non modificati ma non modificati mostrino il loro stato di errore quando il mio oggetto esterno chiama .save(). –