Mein Problem ist, dass ich für jede Auswahlmöglichkeit eine andere Funktion aufrufen muss, nicht die gleiche Funktion.
Ich habe mit ng-click auf jede Option geklickt, habe aber schnell gemerkt, dass das nicht funktioniert. Ich las dann Angulars Dokumentation über ng-Optionen Ссылка
Die Dokumentation veranschaulicht die Verwendung von ng-change, aber es basiert auf der Tatsache, dass für jede select-Option dieselbe Funktion angewendet wird.
Nachdem ich ein wenig darüber nachgedacht habe, habe ich eine Funktion erstellt, die auf ng-change aufgerufen wird. Diese Funktion bestimmt nur, welcher Delegat aufgerufen werden soll.
%Vor%Plunker: Ссылка
Ich habe eine Lösung für mein Problem erstellt, aber ich möchte wissen, ob dies der richtige Ansatz ist. Fehle ich etwas in ng-Optionen, die viele verschiedene Funktionsaufrufe erlaubt?
TL; DR: Ja, Sie machen das Richtige.
Ja, Sie machen das Richtige. Sie verpassen keinen geheimen Aspekt von ng-options
, mit dem Sie für jedes Element etwas anderes festlegen können. In der Tat würde dies den Zweck von ng-options
vereiteln. Es ist speziell für Situationen gedacht, in denen die Anzahl der Elemente, mit denen Sie zu tun haben, variabel ist, aber die Aktionen, die für sie ausgeführt werden müssen, sind gleich.
In deinem Plunker zeigst du das genau. Sie haben eine Liste von Aktionen, die variabel ist. Es könnte eine beliebige Anzahl von Aktionen haben. Was Sie jedoch mit ihnen machen wollen, ist das gleiche: Wenn Sie ein neues Element auswählen, möchten Sie eine Aktion ausführen, die von Ihrem Backing-Bereich angegeben wird. Dies ist genau das, was der Controller tun soll! Wie Sie gefunden haben, müssen Sie Ihre Funktion nur so schreiben, dass sie den aktuellen Zustand der Dinge bestimmt und entsprechend reagiert. Und alles, was Sie tun müssen, ist sicherzustellen, dass es diesen Zustand einrichtet, damit Ihr Controller es verstehen kann.
Du machst das alles schon, also mach weiter so!
Tags und Links angularjs