Sto creando un'interfaccia utente per le autorizzazioni, ho un elenco di autorizzazioni con un elenco di selezione accanto a ciascuna autorizzazione. I permessi sono rappresentati da una matrice osservabile di oggetti che sono legati a un elenco di selezione:
<div data-bind="foreach: permissions">
<div class="permission_row">
<span data-bind="text: name"></span>
<select data-bind="value: level, event:{ change: $parent.permissionChanged}">
<option value="0"></option>
<option value="1">R</option>
<option value="2">RW</option>
</select>
</div>
</div>
Ora il problema è questo: l'evento di modifica viene generato quando l'interfaccia utente viene popolata per la prima volta. Chiamo la mia funzione ajax, ottengo l'elenco delle autorizzazioni e quindi l'evento viene generato per ciascuno degli elementi di autorizzazione. Questo non è davvero il comportamento che voglio. Voglio che venga generato solo quando un utente seleziona davvero un nuovo valore per l'autorizzazione nell'elenco di selezione , come posso farlo?
select
elemento. Tuttavia, anche quando il valore iniziale della selezione corrispondeva a una delle opzioni, ha comunque attivato l'change
evento. Quando ho implementato questo sempliceif
blocco nel gestore, tutto ha funzionato come previsto. Prova prima questo metodo. Grazie, @Sarath!