2017-12-28 3 views
0

Ich habe eine Arbeitsform wählen Sie diese in angularjs.Winkelform Auswahloptionen vs Radio-Tasten

<select ng-model="selectedProduct" 
    ng-options="product as product.text for product in products"> 
</select> 

Ich möchte dies zu Radiobuttons ändern, da es nur zwei Optionen in Produkten gibt. Die Benutzeroberfläche wird sich davon verbessern. Die Ausgabe von oben ist Auswahloptionen mit value=0 und value=1.

Ich versuchte dies:

<div ng-repeat="product in products"> 
    <input id="{{product.productId}}" type="radio" 
     name="BlahBlah" ng-value="{{$index}}" ng-model="selectedProduct" required /> 
    <label for="{{product.productId}}"> 
     {{product.text}} 
    </label> 
</div> 

Die $index macht value=0 und value=1 für die Radio-Buttons, genau wie die Auswahl von Optionen. Aber es funktioniert nicht. Die Daten werden vom Controller nicht aufgenommen und weitergegeben. Ich würde es vorziehen, wenn möglich nicht Dinge in den Controller neu zu schreiben.

Ich dachte, das wäre super einfach: -/ Wie kann ich hier vorwärts gehen?

Antwort

0

Ihr wählen ng-Modells ist ein Objekt Produkt, nicht 0 oder 1. Die äquivalente nur

<input type="radio" name="BlahBlah" ng-value="product" ng-model="selectedProduct" /> 

Demo wäre: http://plnkr.co/edit/OLfcAwv4wEX2K3mAxBxK?p=preview

+0

Vielen Dank für diese Demo! Sehr interessant. In deiner Demo sind sowohl Select als auch die Radios miteinander verknüpft - sie aktualisieren sich gegenseitig. Wenn ich versuche, 'ng-value' in' product' zu ändern, wird die Auswahl tatsächlich die Funkgeräte aktualisieren, aber nicht umgekehrt. Und die Verwendung von Optionsfeldern übergibt immer noch nicht die korrekten Daten an den nächsten Schritt. Aber die Auswahl wird. Ich bin gerade so verwirrt. Großartig für alle Tipps. – martinlex

+0

Das liegt daran, dass Sie 'selectedProduct' als Ihr ng-Modell verwendet haben. TU das niemals. Haben Sie immer einen Punkt in Ihrem ng-Modell. ng-repeat definiert seinen eigenen Bereich und Ihre Funkgeräte befinden sich in einer ng-Wiederholung. Wenn Sie also ein Radio auswählen, wird das 'selectedProduct' in den Bereich der ng-Wiederholung gesetzt und nicht in den Bereich des Controllers. Genau wie ich, und definieren Sie ein Modellobjekt in Ihrem Controller. Und verwenden Sie 'model.selectedProduct' als Ihr ng-Modell. –

+0

Das ist erstaunlich. Ich danke dir sehr! – martinlex

Verwandte Themen