2013-06-17 9 views
5

Mam ten kod nokaut: http://jsfiddle.net/nickbuus/Rwabt/knockoutjs wydarzenie wybierz zmiana zostanie zwolniony podczas wiązania

Problem polega na tym, że ilekroć polu Wybierz rozwijana zostanie wypełnione zdarzenie zmiana zostanie wywołany:

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

Jak naprawić to?

+2

dlaczego trzeba zapisać się na 'change' wydarzenia? Zwykle wiązanie "wartości" i subskrybowanie zmiany wartości wartości powinno wystarczyć dla większości przypadków użycia ... – nemesv

+0

Musisz utworzyć model widoku dla swoich przedmiotów nie tylko nadrzędny model podglądu. Zamiast tego użyj subskrybowania. – Anders

+0

Czy możesz dać mi trochę próbki kodu, jak to będzie wyglądać? z góry dzięki –

Odpowiedz

2

Było dużo tłuczonego i niewykorzystanego kodu w tam

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

Ten jest poprawione. Co spowodowało, że zmiana wywołania nastąpiła z dwóch powodów: użyto ciągu znaków w modelu żywności i numery w kategorii model ("1" != 1), identyfikator 2 nie był obecny w kategoriach (tylko 1) została ustawiona kategoria piwa dla obu produktów spożywczych (CatId 2). Ponieważ KO nie mógł znaleźć ich na liście opcji, zresetował wybraną wartość do null.

Mimo to proszę spojrzeć na moje skrzypce, aby zobaczyć więcej KO sposób robienia rzeczy

+0

Pomimo pomieszania przez związek między kotami a piwem (chociaż jestem za tym wszystkim), zebrałem dość ze swojego przykładu, aby dostosować go do rozwiązania mojego własnego problemu, dzięki :) – webdevduck