2013-06-17 5 views
5

ich diesen Knockout-Code habe: http://jsfiddle.net/nickbuus/Rwabt/knockoutjs Auswahländerungsereignis wird ausgelöst, wenn die Bindung

Das Problem ist, dass, wenn das Dropdown-Auswahlfeld des Änderungsereignis aufgerufen wird, gefüllt wird:

<select data-bind="options: $root.Categories, optionsText: 'categoryName', optionsValue:  'categoryId', value: CatId, optionsCaption: 'Vælg...', event: { change: $root.selectionChanged }"></select> 

Wie kann ich fix Dies ?

+2

Warum Sie auf der 'change' Veranstaltung anmelden müssen, um zu sehen? Normalerweise sollte die Bindung "value" und subscribe bei der Änderung der Werteigenschaft für die meisten Anwendungsfälle ausreichen ... – nemesv

+0

Sie müssen ein Ansichtsmodell für Ihre Elemente erstellen, nicht nur für das übergeordnete Ansichtsmodell. Und benutze stattdessen subscribe. – Anders

+0

Können Sie mir ein kleines Beispiel geben, wie das aussehen würde? danke im voraus –

Antwort

2

Es gab eine Menge von gebrochenen und nicht verwendeten Code in dort

http://jsfiddle.net/Rwabt/5/

Dieser korrigiert wird. Was es tatsächlich Wechselgeld zu nennen gab, ist aus zwei Gründen, Sie verwendet Zeichenfolge im Essensmodell und Zahlen in Kategorie ("1" != 1), Id 2 war nicht in den Kategorien (nur 1) die Bierkategorie wurde für beide Lebensmittel (CatId 2 festgelegt). Da KO diese in der Optionsliste nicht finden konnte, wurde der ausgewählte Wert auf null zurückgesetzt.

Das heißt bitte einen Blick auf meine Geige haben eine KO Art und Weise, Dinge zu tun

+0

Trotz der Verwirrung durch die Beziehung zwischen Katzen und Bier (obwohl ich dafür bin), habe ich genug von Ihrem Beispiel gelernt, um es anzupassen, um mein eigenes Problem zu beheben, danke :) – webdevduck