Ich erstelle eine Berechtigungsbenutzeroberfläche, ich habe eine Liste von Berechtigungen mit einer Auswahlliste neben jeder Berechtigung. Die Berechtigungen werden von einer beobachtbaren Array von Objekten dar, die zu einer Auswahlliste gebunden sind:Ereignis bei Auswahl mit Knockout-Bindung ändern, wie kann ich wissen, ob es sich um eine echte Änderung handelt
<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>
Nun das Problem ist folgende: die Änderung Ereignis ausgelöst wird, wenn die Benutzeroberfläche nur zum ersten Mal bevölkert. Ich rufe meine Ajax-Funktion auf, hole die Berechtigungsliste und erhöhe dann das Ereignis für jedes der Berechtigungselemente. Das ist wirklich nicht das Verhalten, das ich will. Ich möchte es angehoben werden, nur wenn ein Benutzer wirklich einen neuen Wert für die Erlaubnis in der Auswahlliste herausholt, wie kann ich das tun?
nach 2 Stunden graben die Ursache meines Formulars auslösen das "Change" -Ereignis nach dem Laden der Seite, hast du mich gerettet gespeichert. –
Ihre Antwort gab mir eine Idee ... Ich änderte absichtlich den Typ, der von der URL kommt, so dass meine Subscribe-Funktion beim Laden der Seite ausgelöst würde (ich wollte eine URL-Variable verarbeiten, nicht nur wenn mein Dropdown eine Änderung auslöst). Gibt es eine weniger hacky Art, dies zu tun? – Jiffy