Ich habe eine ng-repeat
wo ich neue select
Elemente auf einer Seite generieren. Es funktioniert gut, sie sind zusammen mit allen Optionen erstellt. Das Problem ist, dass sie am Ende die gleiche ng-model
haben und somit, wenn es mehr als eine select
auf der Seite gibt, nur die erste den voreingestellten Wert erhält und das Ändern des ausgewählten Elements bewirkt, dass die ausgewählten Elemente in der anderen Auswahl deaktiviert werden .Wie man ausgewählte Elemente mit verschiedenen Modellen dynamisch erzeugt?
Grundsätzlich habe ich den folgenden Code davon für die Erzeugung:
<div ng-repeat="item in items">
<div ng-if="item.type === 'select'">
<select ng-init="data.selectedItem = data.selectedItem || item.subItems[0]"
class="form-control"
ng-model="data.selectedItem"
ng-change="selectedItemChanged()"
ng-options="subItem as subItem.name for subItem in item.subItems">
</select>
</div>
</div>
Die Daten wie folgt aussieht:
scope.items = [
{
id: 1,
type: 'select',
subItems: [{
ID: 1,
name: 'sub item 1'
}, {
ID: 2,
name: 'sub item 2'
}, {
ID: 3,
name: 'sub item 3'
}]
},
{
id: 2,
type: 'select',
subItems: [{
ID: 4,
name: 'sub item 4'
}, {
ID: 5,
name: 'sub item 5'
}, {
ID: 6,
name: 'sub item 6'
}]
},
];
I versucht haben die folgende Art und Weise unterschiedliche (dynamisch) Modellen zu jedem von Zuweisen wählen:
<div ng-repeat="item in items">
<div ng-if="item.type === 'select'">
<div class="col-xs-4 col-sm-4 col-md-2">
<select ng-init="data[data.selectedItem + item.id] = data[data.selectedItem + item.id] || data[item.subItems[0] + item.id]"
class="form-control"
ng-model="data[data.selectedItem + item.id]"
ng-change="selectedItemChanged(data[data.selectedItem + item.id])"
ng-options="subItem as subItem.name for subItem in item.subItems">
</select>
</div>
</div>
</div>
Aber jetzt das Problem ist, dass es nicht das Standardelement nicht gesetzt in die Auswahl, wenn die Seite zum ersten Mal geladen wird.
Vielen Dank, dass gut funktioniert! Ich habe am Ende nur das gesamte "subItem" -Objekt in "ng-options" verwendet, weil auf diese Weise das Modell das ganze Objekt und nicht nur den Namen hat. – Apostrofix