Wiązanie listy obiektów do select
przy użyciu nokautu. Klasa obiekt może mieć dowolną liczbę właściwościPowiązanie pojedynczej opcji z poprawnością jQuery nie działa
<select id="TheProperty_City"
name="TheProperty_City"
class="required"
data-bind="options: cityList,
optionsText: 'Name',
value: selectedCity,
optionsCaption: '--select the city--'" />
to działa perfekcyjnie i mogę używać viewModel.selectedCity().Name
lub viewModel.selectedCity().Value
załadunku elementów podrzędnych.
Mój problem dotyczy sprawdzania poprawności jQuery. Jeśli opuszczę instrukcję jak powyżej, jQuery nie zresetuje błędu nawet po wyborze.
Naprawiłem to, określając optionsValue
w wiązaniu, ale następnie selectedCity
zwraca wartość skalarną, a nie cały obiekt. Każdy pomysł, jak zachować zachowanie obiektu lub inaczej walidacji?
<select id="TheProperty_City"
name="TheProperty_City"
class="required"
data-bind="options: cityList,
optionsText: 'Name',
optionsValue: 'Value', //added the optionsValue
value: selectedCity,
optionsCaption: '--select the city--'" />
Błąd pozostaje tam, kiedy optionsValue
nie jest określony:
Oto mój Object Watch na selectedCity
:
Oto Object Uważaj na selectedCity
gdy optionsValue
jest określony:
Dzięki, to jest to, co mam jako obejście, ale nużące to zrobić dla wszystkich dropdownów. Mój skrypt knockoutjs szybko rośnie i zastanawiam się, czy to jest warte wysiłku, gdy tracisz pomocników HTML mvc control, adnotacje danych ViewModel serwera i wbudowaną obsługę sprawdzania poprawności. Ofcourse databinding jest świetny. W każdym razie, zrobię to jako odpowiedź, by pomóc innym poszukiwaczom. –
Jak zaimplementować niestandardowe powiązanie, aby to naprawić? – Jason
Miałem ten sam problem i rozwiązany w taki sam sposób, jak opisał RP Niemeyer. Nadal zastanawiam się, jak zrobić to ładniej, bo Jason napisał coś nieczytelnego dla dużych modeli podglądu. –