Biorąc pod uwagę następujący element wybierz
<select ng-options="size.code as size.name for size in sizes "
ng-model="item.size.code"
ng-change="update(MAGIC_THING)">
</select>
Czy istnieje sposób, aby uzyskać MAGIC_THING być równa aktualnie wybranego rozmiaru, więc mam dostęp do size.name
i size.code
w moim kontrolera?
size.code wpływa na wiele innych części aplikacji (adresy URL obrazów itp.), ale kiedy item.size.code
zaktualizowany jest model ng , item.size.name
należy go również zaktualizować dla użytkowników stojących naprzeciwko. Zakładam, że poprawnym sposobem na to jest przechwycenie zdarzenia zmiany i ustawienie wartości w moim kontrolerze, ale nie jestem pewien, co mogę przekazać aktualizacji, aby uzyskać odpowiednie wartości.
Jeśli jest to całkowicie niewłaściwy sposób, chciałbym poznać właściwą drogę.
<select>
: ng-init = "item = rozmiary [0]"ng-model="selectedItem" ng-change="update(selectedItem)"
Możesz także uzyskać wybraną wartość bezpośrednio, używając następującego kodu
script.js
źródło
możesz także spróbować tego:
źródło
Jeśli odpowiedź Divyesh Rupawala nie działa (przekazując bieżący element jako parametr), zobacz
onChanged()
funkcję w tym Plunkerze. Używathis
:http://plnkr.co/edit/B5TDQJ
źródło
źródło
Jeśli chcesz pisać, nazwa, identyfikator, klasa, wielokrotność, wymagane, możesz pisać w ten sposób.
źródło
To może dać ci kilka pomysłów
.NET C # Wyświetl model
Kontroler interfejsu API sieci Web .NET C #
Kontroler kątowy:
Szablon kątowy:
źródło
Musisz użyć opcji „śledź według”, aby obiekty mogły być poprawnie porównywane. W przeciwnym razie Angular użyje natywnego js do porównywania obiektów.
Twój przykładowy kod zmieni się na -
źródło
Filtr AngularJS zadziałał dla mnie.
Zakładając, że
code/id
jest unikalny , możemy odfiltrować ten konkretny obiekt za pomocą AngularJSfilter
i pracować z właściwościami wybranych obiektów. Biorąc pod uwagę powyższy przykład:Teraz są 3 ważne aspekty :
ng-init="search.code = item.size.code"
- przy inicjowaniuh1
elementu pozaselect
polem ustaw zapytanie filtru na wybraną opcję .ng-change="update(MAGIC_THING); search.code = item.size.code"
- kiedy zmienisz wybrane wejście, uruchomimy jeszcze jedną linię, która ustawi zapytanie „search” na aktualnie wybraneitem.size.code
.filter:search:true
- Przekażtrue
do filtra, aby umożliwić ścisłe dopasowanie .Otóż to. Jeśli
size.code
jest unikalny , będziemy mieli tylko jedenh1
element z tekstemsize.name
.Przetestowałem to w moim projekcie i działa.
Powodzenia
źródło
Jest to najczystszy sposób na uzyskanie wartości z listy opcji wyboru kątowego (innej niż Id lub Tekst). Zakładając, że masz na stronie taki produkt:
Następnie w kontrolerze ustaw funkcję oddzwaniania w następujący sposób:
Po prostu wyjaśnione: Ponieważ zdarzenie ng-change nie rozpoznaje opcji w zaznaczeniu, używamy ngModel do odfiltrowania wybranego elementu z listy opcji załadowanej do kontrolera.
Ponadto, ponieważ zdarzenie jest uruchamiane przed aktualizacją ngModel, możesz uzyskać niepożądane wyniki, więc lepszym sposobem byłoby dodanie limitu czasu:
źródło