Ich erstelle eine Benutzeroberfläche für Berechtigungen. Ich habe eine Liste mit Berechtigungen mit einer Auswahlliste neben jeder Berechtigung. Die Berechtigungen werden durch ein beobachtbares Array von Objekten dargestellt, die an eine Auswahlliste gebunden sind:
<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>
Das Problem ist nun folgendes: Das Änderungsereignis wird ausgelöst, wenn die Benutzeroberfläche zum ersten Mal gefüllt wird. Ich rufe meine Ajax-Funktion auf, erhalte die Berechtigungsliste und dann wird das Ereignis für jedes der Berechtigungselemente ausgelöst. Das ist wirklich nicht das Verhalten, das ich will. Ich möchte, dass es nur ausgelöst wird, wenn ein Benutzer wirklich einen neuen Wert für die Berechtigung in der Auswahlliste auswählt . Wie kann ich das tun?
select
Element getestet . Selbst wenn der Anfangswert der Auswahl mit einer der Optionen übereinstimmte, wurde daschange
Ereignis dennoch ausgelöst . Als ich diesen einfachenif
Block im Handler implementiert habe , hat alles wie erwartet funktioniert. Versuchen Sie zuerst diese Methode. Danke, @Sarath!