Gegeben das folgende Auswahlelement
<select ng-options="size.code as size.name for size in sizes "
ng-model="item.size.code"
ng-change="update(MAGIC_THING)">
</select>
Gibt es eine Möglichkeit, MAGIC_THING so zu gestalten, dass es der aktuell ausgewählten Größe entspricht, sodass ich Zugriff auf size.name
und size.code
in meinem Controller habe?
size.code wirkt sich auf viele andere Teile der App aus (Bild-URLs usw.), aber wenn das ng-Modell von item.size.code
aktualisiert wird, item.size.name
muss es auch für Benutzer aktualisiert werden. Ich gehe davon aus, dass der richtige Weg, dies zu tun, darin besteht, das Änderungsereignis zu erfassen und die Werte in meinem Controller festzulegen, aber ich bin nicht sicher, was ich an update übergeben kann, um die richtigen Werte zu erhalten.
Wenn dies der völlig falsche Weg ist, würde ich gerne den richtigen Weg kennen.
<select>
: ng-init = "item = Größen [0]"ng-model="selectedItem" ng-change="update(selectedItem)"
Sie können den ausgewählten Wert auch direkt mit dem folgenden Code abrufen
script.js
quelle
Sie können dies auch versuchen:
quelle
Wenn die Antwort von Divyesh Rupawala nicht funktioniert (Übergabe des aktuellen Elements als Parameter),
onChanged()
lesen Sie bitte die Funktion in diesem Plunker. Es verwendetthis
:http://plnkr.co/edit/B5TDQJ
quelle
quelle
Wenn Sie schreiben möchten, Name, ID, Klasse, mehrere, erforderlich, können Sie auf diese Weise schreiben.
quelle
Dies könnte Ihnen einige Ideen geben
.NET C # -Modell anzeigen
.NET C # Web-API-Controller
Winkelregler:
Winkelvorlage:
quelle
Sie müssen "Track by" verwenden, damit die Objekte korrekt verglichen werden können. Andernfalls verwendet Angular die native js-Methode zum Vergleichen von Objekten.
Ihr Beispielcode würde sich also in - ändern
quelle
AngularJS 'Filter hat für mich funktioniert.
Angenommen, das
code/id
ist eindeutig , können wir dieses bestimmte Objekt mit AngularJS herausfilternfilter
und mit den ausgewählten Objekteigenschaften arbeiten. Betrachtet man das obige Beispiel:Nun gibt es drei wichtige Aspekte dazu :
ng-init="search.code = item.size.code"
- Setzen Sie beim Initialisieren desh1
Elements außerhalb desselect
Felds die Filterabfrage auf die ausgewählte Option .ng-change="update(MAGIC_THING); search.code = item.size.code"
- Wenn Sie die Auswahleingabe ändern, wird eine weitere Zeile ausgeführt, in der die Suchabfrage auf die aktuell ausgewählte gesetzt wirditem.size.code
.filter:search:true
-true
Zum Filter übergeben, um eine strikte Übereinstimmung zu ermöglichen .Das ist es. Wenn das
size.code
ist uniqueID , wir haben nur einh1
Element mit dem Textsize.name
.Ich habe dies in meinem Projekt getestet und es funktioniert.
Viel Glück
quelle
Dies ist der sauberste Weg, um einen Wert aus einer Liste mit Winkelauswahloptionen (außer The Id oder Text) abzurufen. Angenommen, Sie haben eine Produktauswahl wie diese auf Ihrer Seite:
Stellen Sie dann in Ihrem Controller die Rückruffunktion wie folgt ein:
Einfach erklärt: Da das Ereignis ng-change die Optionselemente in der Auswahl nicht erkennt, verwenden wir das ngModel, um das ausgewählte Element aus der im Controller geladenen Optionsliste herauszufiltern.
Da das Ereignis ausgelöst wird, bevor das ngModel wirklich aktualisiert wird, erhalten Sie möglicherweise unerwünschte Ergebnisse. Ein besserer Weg wäre also, eine Zeitüberschreitung hinzuzufügen:
quelle